en raison de Comment les flux de données via React-Redux applications, des données mises à jour Dans le magasin n'est pas disponible dans un composant réactif tant que ce composant renouille.
Ma pose est, dans un composant donné, j'aimerais utiliser le magasin mis à jour sans em> re-rendant le composant. Je cherche à faire quelque chose comme ceci: p> ceci ne fonctionne pas strong>, car J'ai fait quelque chose comme ça, mais c'est absolument horrible mais ça marche ... P> accessoires code> n'est pas mis à jour avant MyComponent renouille. Je ne peux pas appeler
ceci.props.a.find (a => a.name === "valeur"); code> car les accessoires n'auront pas la valeur "A" la plus récente. Dans mon cas, je ne peux pas attendre que MyComponent soit rendu. Quelles sont mes options pour accéder à l'état le plus récent de MyComponent? P>
func(){
if (this.props.step1){
// Add item to A
this.props.addAItem("value");
this.props.setStep2();
} else if (this.props.step2) {
// Get id of newly added item in A
let addedA = this.props.A.find(a => a.name === "value");
this.props.setStep3();
}
// etc...
}
3 Réponses :
OK Si je comprends votre question correctement, votre méthode de fonctionnement Func ADDITEMB est alors additemb dépend de la réponse de Addiditema, Addidit serait une opération ASYNC, donc dans votre action supplémentaire lorsque vous ajoutez l'article que vous pouvez simplement revenir à votre action. Ce qui résout le retour de l'identifiant de l'élément nouvellement créé et de l'intérieur de votre composant, vous pouvez gérer dans un bloc d'AN alors que espère qu'il aide p> p>
Oui, je pense que cela devrait faire l'affaire, merci pour votre réponse!
Si la réponse a aidé, veuillez envisager d'accepter et de voter, à acclamer :)
Cela m'a beaucoup appris, mais maintenant je vois que "les actions doivent être des objets simples. Utilisez le middleware personnalisé pour les actions ASYNC". Une fois que je découvre plus de détails, je voudrais mettre cela à côté de cette question et l'accepter.
Je pense que vous retournez la fonction de Action Creator, vous pouvez utiliser Redux-thunk pour résoudre ce problème, car par des actions par défaut sont des objets JSL, Redux-thunk vous permet de retourner la fonction des créateurs d'action, espérons qu'il clarifie
Merci @ibtsam. J'ai fini par prendre une approche différente qui fonctionne, s'il vous plaît voir ma réponse pour plus de clarification. Merci de votre aide.
faire à un lot em> de bilan et d'avant, et des tests, j'ai couru dans de nombreux murs essayant de comprendre celui-ci mais finalement compris. Voici ce que vous devez faire. Remarque: Ceci n'est pas considéré comme faisant partie de l'API publique Redux Reagux et peut se casser sans préavis. Nous reconnaissons que la communauté utilise des cas où cela est nécessaire et essaiera de permettre aux utilisateurs de créer des fonctionnalités supplémentaires au-dessus de Reag Exsix, mais notre utilisation spécifique du contexte est considérée comme un détail de la mise en œuvre. Si vous avez des cas d'utilisation supplémentaires qui ne sont pas suffisamment couverts par les API actuels, veuillez déposer un problème pour discuter d'éventuelles améliorations de l'API. - https: //react-redux.js .Org / Utilisation-React-Redux / Accès-Magasin # Utiliser-ReacTreDuxContext-directement P>
BlockQuote> Assurez-vous que votre package STRY> React fort> est Le the magic est Je veux souligner que j'ai largement regardé à J'ai tenté de nombreuses façons d'essayer de renvoyer l'état de Redux mis à jour dans une action, mais que j'utilisais BindACeCreators, je ne pouvais pas retourner la valeur de l'état de Redux à partir d'une action donnée. Le seul moyen de récupérer un état actualisé de Redux Store sans em> s'appuyer sur le composant lui-même à mettre à jour / re-rendu consiste à utiliser la méthode que je décris ci-dessus. p> p>
16.8.3 code> ou ultérieur. Assurez votre
7.1 code> ou supérieur. Vous avez besoin de ces versions en raison de la nouvelle façon (en réagissant 16.8.3) réagir sur le contexte des composants de l'enfant. Nous nous soucions du contexte parce que ce nouveau réact de contexte API est la manière dont le
store.getstate () code> qui retourne le redouplement mis à jour Magasin. P>
Redux-thunk code>
, mais cette approche n'a pas fini par donner ce dont j'avais besoin. Le problème principal est l'utilisation de BindACeCreators forts> dans mon composant. Parce que j'utilise BindACeCreators fort>, toute action que j'appelle attend un objet vide, qui est envoyé au Redu Storage. P>
Je ne comprends pas la question. - Lorsque les mises à jour de Redux Store, les accessoires de votre composant changeront et une répercussentation se produira (en supposant que vous n'ayez pas implumé une méthode de Compolpoentupdate). Pourquoi voudriez-vous que les composants, l'état interne change sans un titre de plus en plus?
@dwjohnston La raison de ce mode de pensée est que toutes les actions sont censées se produire comme une seule unité, je ne peux pas avoir de rendu de MyComponent, comme cela vous demanderait de cliquer sur cela
Un composant RERENDER ne réinitialisera pas l'état du composant. Il suffit de définir l'état du composant sur l'OnCliquez, puis envoyez-vous?
@dwjohnston Mon composant s'appuie sur la valeur du magasin. La valeur du magasin (mappée comme des accessoires) ne se met pas à jour tant que le composant reçoit de nouveaux accessoires (et le composant est re-rendu). Tout fonctionnerait bien, à l'exception de ma fonction nécessite une entrée de l'utilisateur. Ainsi, après avoir appelé ma première expédition, le composant renouré et mon fonctionnement () ne continue pas d'exécuter, cela a-t-il un sens?