2017-04-11 3 views
0

exemple, si l'état de l'application estPour React/Redux, si l'utilisateur clique simplement sur pour voir les différents composants/conteneurs à l'aide de React Router, comment l'état de l'application peut-il être modifié?

const rootReducer = combineReducers({ 
    allPosts: PostsReducer, 
    post: PostReducer 
}); 

Lorsque l'utilisateur clique sur un poste dans la liste de tous les messages (indice), et de voir un poste (avec le récipient de PostsShow), puis l'utilisateur clique "Retour à l'index", puis cliquez sur un autre poste, maintenant Imaginez si le réseau est lent ou bloqué, l'utilisateur verra ce post précédent, car state.post n'est jamais modifié, avant que l'AJAX puisse récupérer des données.

En fait, toutes les actions de l'utilisateur ont été effectuées par <Link to="..." /> par react-router. Existe-t-il un moyen de remettre le state.post à null lorsque l'utilisateur clique sur «Retour à l'index» dans la page de publication unique (à l'aide du conteneur de courrier unique) ou bien, existe-t-il une autre méthode permettant de ne pas afficher post précédent?

+0

avez-vous essayé componentWillUnmount? –

+0

est-ce d'appeler un créateur d'actions à l'intérieur de 'componentWillUnmount()'? Nous avons donc besoin d'une nouvelle action telle que CLEAR_POST? Alors peut-être que nous pouvons même y penser de cette façon: chaque fois que nous avons besoin de changer l'état d'une application, pensez à une action créée par un créateur d'action et pensez simplement à l'endroit où le créateur d'action peut être appelé. –

Répondre

0

Peut être un peu stupide, mais:

render(){ 
    return(
    this.props.params.post_id != this.props.post.id ? <LoadingMessage /> : <PostPage /> 
)} 
+0

J'ai pensé à cette méthode ... mais que se passerait-il si l'utilisateur lui-même ou un autre utilisateur modifiait ou supprimait le message, alors ... avec une erreur réseau, cette méthode affiche l'ancien contenu comme si le message était comme ça nouvelle version). Je pense que l'application pourrait être mieux juste pour montrer "Chargement ..." au lieu de montrer des données erronées. Voir ... (1) si le réseau est correct, affichez les données correctes après 0 ou 2 secondes, après avoir montré les mauvaises données (2) si le réseau est lent ou lent, affichez les données erronées et arrêtez-vous, ou montrez les mauvaises données 7 premières secondes, puis montrer les bonnes données ... Je préfère (2) ne se passe pas –