我在顶层有许多导航链接,当您在链接之间切换时,它们可以切换页面级别的组件。某些页面具有创建成本高昂的复杂网格组件。我注意到每次切换页面时 react-router 都会构造组件。有没有办法缓存传递到路由中的组件?,即 PositionsPage
<Route path="/positions" component={PositionsPage} />
我在顶层有许多导航链接,当您在链接之间切换时,它们可以切换页面级别的组件。某些页面具有创建成本高昂的复杂网格组件。我注意到每次切换页面时 react-router 都会构造组件。有没有办法缓存传递到路由中的组件?,即 PositionsPage
<Route path="/positions" component={PositionsPage} />
这是 React 整体(而不仅仅是react-router
)的一个非常重要的性能考虑因素。
默认情况下,React 会为props
或 中的任何更改重新呈现完整的 DOM 树state
。
注意:组件的正确性是自动处理的。没什么好担心的。
这应该相当简单。以下webpack.config.js
插件部分片段应确保NODE_ENV
变量到达 React 源代码。
...
plugins: [
new CommonsChunkPlugin('bundle.js'),
new webpack.DefinePlugin({
'process.env': {
'NODE_ENV': JSON.stringify(process.env.NODE_ENV)
}
})
]
...
现在只需确保NODE_ENV=production webpack -p
.
这可确保propTypes
跳过所有这些警告/错误和检查。
警告:您必须处理所有可能的条件矩阵(如果需要)props
并state
确保您不会弄乱渲染的正确性。
这是必须实现的回调签名。每当 anystate
或prop
value 更改时都会调用它。
shouldComponentUpdate: function(nextProps, nextState) {
// @TODO your logic here
// return true to update, false otherwise
return true;
}
请记住,React 会经常调用此函数,因此实现必须很快。
您可以将昂贵的组件合二为一,只需使用 css 样式隐藏不需要的部分。