gpt4 book ai didi

javascript - React router render prop 路由总是重新渲染组件

转载 作者:行者123 更新时间:2023-11-29 17:42:00 25 4
gpt4 key购买 nike

我正在使用 React Router,因为需要将采用组件的函数传递到路由中,所以我使用 render prop 渲染组件。但是,将路由作为 render prop 传递总是会导致组件重新渲染。我已经尝试了所有可能的 lifeCycle 钩子(Hook),例如 shouldComponentUpdate 和 ComponentDidUpdate,但没有什么能阻止组件重新渲染。该路由结构如下所示:

路线一:

<Route
path='/dashboard'
render={() => dashboardOperator(<Dashboard />)}
/>

相反,如果我只是以传统方式传递组件,它不会触发自动重新渲染。

路线2:

 <Route
path="/dashboard"
component={DashboardComponent}
/>

但是,这种路由方式并不有效,因为它不允许将函数传递到路由中。

由于生命周期 Hook 似乎不能有效地阻止 Route1(render prop 方法)重新渲染组件,我如何使用 render prop(或其他方法)并防止不必要的组件重新渲染?

最佳答案

尝试这样的事情:

class App extends React.PureComponent {
renderDashboardPage() {
return dashboardOperator(<Dashboard />)
}

render() {
return (
<Route
path='/dashboard'
render={this.renderDashboardPage}
/>
);
}
}

这应该可行,因为函数/对象引用在重新渲染时保持不变,因此 React 将意识到 props 没有改变。虽然,要小心过早的优化。

关于javascript - React router render prop 路由总是重新渲染组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52529056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com