Reactjs 如何在react路由器重定向期间管理react中的状态

Reactjs 如何在react路由器重定向期间管理react中的状态,reactjs,react-router,Reactjs,React Router,例如,假设我有一个子组件(表的行),其状态为“rating”键,构造函数中的值设置为“0” 在getDerivedStateFromProps和ComponentDidMount中,评级设置为this.props.rating。到目前为止还不错 现在用户设置了一个新的等级,状态更新,对mysql的查询被调度,一切都很好。但是,用户单击一个链接(react router dom)到他们已经在的同一页面。React更新所有组件,但由于更高级别的组件没有更改,因此它不会再次查询数据库中的歌曲,因此同一

例如,假设我有一个子组件(表的行),其状态为“rating”键,构造函数中的值设置为“0”

在getDerivedStateFromProps和ComponentDidMount中,评级设置为this.props.rating。到目前为止还不错

现在用户设置了一个新的等级,状态更新,对mysql的查询被调度,一切都很好。但是,用户单击一个链接(react router dom)到他们已经在的同一页面。React更新所有组件,但由于更高级别的组件没有更改,因此它不会再次查询数据库中的歌曲,因此同一组歌曲会作为道具和旧的评级一起传递

我的问题很简单:高级组件是否应该在用户每次重定向到该组件时查询数据库?如果是这样的话,有没有一种生命周期方法,因为道具不会改变?还是应该在用户每次选择评级时发送对新歌曲集的查询?后者似乎是正确的方法,但效率也很低。

您需要这样做,以便它位于所有需要访问它的组件最近的共同祖先中。更新评级时,需要更新更高级别组件中的状态,而不是子组件中的状态。子组件应该主要是表示性的-它接受一个等级来显示,并提供一个用于更新它的回调。但是实际的更新和mySql交互应该发生在更高的祖先级别,并通过道具传递下去

请记住:

您需要这样做,以便它位于距离需要访问它的所有组件最近的公共祖先中。更新评级时,需要更新更高级别组件中的状态,而不是子组件中的状态。子组件应该主要是表示性的-它接受一个等级来显示,并提供一个用于更新它的回调。但是实际的更新和mySql交互应该发生在更高的祖先级别,并通过道具传递下去

记住: