Je suis en train de séparer une présentation des composants à partir d'un composant conteneur. J'ai un SitesTable
et SitesTableContainer
. Le conteneur est responsable du déclenchement redux actions pour aller chercher les sites appropriés en fonction de l'utilisateur actuel. Le problème est que l'utilisateur actuel est récupérée de manière asynchrone, après le composant conteneur est rendu au départ. Cela signifie que le composant conteneur ne sait pas qu'il a besoin de ré-exécuter le code de son componentDidMount
fonction qui permettrait de mettre à jour les données à envoyer à l' SitesTable
. Je pense que j'ai besoin alors rendre à nouveau le composant conteneur lors de l'un de ses accessoires(utilisateur) des changements. Comment puis-je faire cela correctement?
class SitesTableContainer extends React.Component {
static get propTypes() {
return {
sites: React.PropTypes.object,
user: React.PropTypes.object,
isManager: React.PropTypes.boolean
}
}
componentDidMount() {
if (this.props.isManager) {
this.props.dispatch(actions.fetchAllSites())
} else {
const currentUserId = this.props.user.get('id')
this.props.dispatch(actions.fetchUsersSites(currentUserId))
}
}
render() {
return <SitesTable sites={this.props.sites}/>
}
}
function mapStateToProps(state) {
const user = userUtils.getCurrentUser(state)
return {
sites: state.get('sites'),
user,
isManager: userUtils.isManager(user)
}
}
export default connect(mapStateToProps)(SitesTableContainer);