Dites-nous quelles versions vous utilisez :
Actions.refresh() actualise la scène actuelle.
Si mon approche était erronée ou si Actions.refresh a des exigences, veuillez me fournir les informations
const ConnectRouter = connect()(Router);
const Routes = () => (
<ConnectRouter>
<Scene key="root">
<Scene key="launchScreen" component={LoadingFull} hideNavBar />
<Scene key="login" component={LoginForm} hideNavBar type={ActionConst.RESET} />
<Scene key="lostPassword" component={LostPasswordForm} hideNavBar />
<Scene key="dashboard" component={Dashboard} hideNavBar type={ActionConst.RESET} />
<Scene key="search" component={SearchResult} hideNavBar />
</Scene>
</ConnectRouter>
);
Lorsque j'étais sur la scène de recherche (composant simple avec état), j'essayais de rafraîchir la scène en utilisant Actions.refresh. Mais d'une manière ou d'une autre, cela n'a pas fonctionné du tout.
+1
je veux utiliser renderBackButton de la scène. Mon exemple de code,
public componentWillMount (): void {
Actions.refresh({
renderBackButton: this.renderBackButton.bind(this),
onRight: this.onRightButtonPress.bind(this)
});
}
Ça ne fonctionne pas. Je pense que c'est le même problème.
Essayez leftButton
au lieu de renderBackButton
et transmettez-lui Component.
@kesha-antonov Ça ne marche pas. Je crée un nouveau problème pour cela.
Ça marche pour moi. rnrf-4-beta22
leftButton
pour l'icône de gauche
right
pour l'icône de droite
public componentWillMount (): void {
this.props.navigation.setParams({
onRight : () => {this.myOnRight();},
titredroit:'nouveautitre',
});
}
Cela fonctionne pour moi.
Jésus, je suis venu ici pour chercher une réponse au problème initial.
S'il vous plaît, essayez de ne pas vous greffer sur des problèmes non liés !
J'ai le même problème MAIS lors de la mise à jour du magasin (mobx)
<strong i="7">@observer</strong>
class Custom extends Component {
render() {
// prints every time I update state, this's ok!
console.log('update', store.session.get('logged'))
return (
<Router>
<Scene key="root">
<Scene key="login"
component={login}
type="replace"
onEnter={() => {
// ONLY enter here once
console.log('onEnter');
return store.session.get('logged')
}}
success="recents"
/>
<Scene key="recents" component={recents} />
</Scene>
</Router>
)
}
}
J'ai essayé de déclencher le 're-render' en appelant Actions.refresh()
après la mise à jour du magasin, mais onEnter
ne répond pas.
_onPressButton() {
store.session.set('logged', !store.session.get('logged')) // invert the value in store
Actions.refresh() // tested with { key: 'login' } too
}
@aksonov Pourriez-vous nous indiquer la bonne direction ? :prier:
salut
J'ai le même problème ... Lorsque j'essaie de rafraîchir avec Actions.refresh() rien ne se passe
import React, { Component } from 'react';
import {
View,
Text,
Button,
} from 'react-native';
import { Actions } from 'react-native-router-flux';
export default class Types extends Component {
constructor(props) {
super(props);
console.log("Constructor Types")
}
componentWillMount() {
console.log('Will mount Types')
}
componentWillUpdate() {
console.log("Will Update Types")
}
componentWillUnmount() {
console.log("will Unmont Types")
}
render() {
console.log("render Types")
return (
<Button title='refresh' onPress={() => Actions.refresh()}/>
)
}
}
même problème ici, j'utilise redux et lorsque j'essaie d'actualiser le bouton droit, il ne se met tout simplement pas à jour.
Veuillez reproduire le problème avec Exemple de projet.
Actions.refresh({ key: Actions.currentScene });
ne fonctionne pas la deuxième fois
https://github.com/aksonov/react-native-router-flux/issues/2862
@aksonov
@jaysassyinfotech
Actions.refresh({ clé : Actions.currentScene }); ne fonctionne pas la deuxième fois
Ça marche si tu fais comme ça :)
Actions.refresh({clé : Math.random()})
@ cosinus84 Monsieur, vous êtes une bouée de sauvetage.
@ cosinus84 C'est vraiment du travail. Wow
Mais y a-t-il une explication pourquoi Math.random() fait toutes les astuces ?
@ cosinus84 tu déchires mec (y)
Espérons que le hasard n'est pas nécessaire pour la dernière version maintenant
@aksonov S'il vous plaît, pouvez-vous lister les accessoires (avec leurs fonctions) que nous pouvons utiliser dans Actions.refresh() car les accessoires de scène ne semblent pas fonctionner ici.
Vous pouvez vérifier l'application Exemple et ses appels d'actualisation - cela fonctionne bien avec la dernière version 4.0.5. N'hésitez pas à cloner et à modifier l'exemple en conséquence pour illustrer le problème.
Oui, cela fonctionne bien mais je vous suggère de faire une liste d'accessoires à utiliser avec les appels d'actualisation car nous ne savons peut-être pas lequel utiliser et quand.
Par exemple, pour rendre le bouton de retour, nous devons utiliser leftButton
prop mais je ne le savais pas avant de lire le commentaire de @kesha-antonov
ça marche
@preetluv pense -t-il à me dire comment vous l'avez réparé ?
@preetluv voir la réponse de cosinus84
vous pouvez faire ce qui suit : -
Actions.pop()
setTimeout(()=> Actions.refresh({"somePropToRefresh":Math.random(),"yourProp":"pour actualiser
écran précédent en revenant"}),0.5);
Vous pouvez vérifier le "yourProp" dans componentWillReceiveProps dans l'écran précédent après avoir fait retour.
J'utilise react-native-router-flux 4.2.0-beta.2
et ça marche avec setTimeout
Commentaire le plus utile
@jaysassyinfotech
Actions.refresh({ clé : Actions.currentScene }); ne fonctionne pas la deuxième fois
Ça marche si tu fais comme ça :)
Actions.refresh({clé : Math.random()})