J'ai un composant pour afficher des nouvelles quelque part dans la page. Vous pouvez évaluer des nouvelles (donnez-lui des étoiles).
J'ai un autre composant dans un autre endroit où certaines nouvelles sont affichées. Dans ce composant, vous pouvez également évaluer les nouvelles. Je tiens à mettre à jour Quelques pseudocode: P> Actualités CODE> Composant (RERender IT) après un vote dans class SomeComponentWhereNewsAreDisplayed extends React.Component
{
voteAndUpdateNewsComponent() {
updateNewsComponent()
}
render() {
return <div>
...
<some functionality that allows to give a star to news onClick={this.voteAndUpdateNewsComponent}>
...
</div>
}
}
class News extends React.Component
{
componentDidMount() {
//..ajax request to get ratings, or taking it from localStorage, etc..
}
render() {
return <div>
{this.state.ratings.map(rating => { return <span>{rating.stars}</span>})
</div>
}
};
3 Réponses :
Bonjour Vous pouvez utiliser la gestion de l'état comme Redux ou le contexte pour résoudre ce problème. p>
En règle générale, si deux composants réagissants n'appartiennent pas à la même hiérarchie des composants, ils ne peuvent pas échanger de données. Il y a un certain nombre de hacks pour se déplacer, mais idéalement, vous voulez les mettre dans la même hiérarchie et échanger des accessoires et des rappels. P>
Si vous ne voulez pas faire cela, vous avez toujours des refuges à votre disposition pour tirer la direction de l'état de la hiérarchie: https://react-redux.js.org/api/connect p>
Vous n'avez pas besoin d'utiliser un conteneur d'état pour cela. Transférer une fonction de SomecomponentwherenewsaredisameDisplay à des nouvelles qui met à jour l'état de somecomponentwherenewsaredisamedisedisedis et est connecté au gestionnaire de clics de l'étoile de l'actualité. Cela provoque votre parent (somecomponentwherenewsaredisamed) et ses enfants de se répercuter. p>