Javascript 当路由更改时,是否可以避免重新呈现父路由处理程序组件?

Javascript 当路由更改时,是否可以避免重新呈现父路由处理程序组件?,javascript,reactjs,react-router,Javascript,Reactjs,React Router,我是react/redux中的noobies,我希望按照以下3条规则创建模式视图: 谁是url依赖者 谁是普通人 谁是优化的 由于url的依赖性,它没有得到优化,它正在重新提交父项 示例:我在“/namespaces”中有一个视图namespaces视图,该视图打印所有名称空间,当我打开“/namespaces/edit”时,该视图打开模式视图,名称空间将被重新渲染。如何不重新命名名称空间列表 在路由器下方 <Route path="namespaces" component={Nam

我是react/redux中的noobies,我希望按照以下3条规则创建模式视图:

  • 谁是url依赖者
  • 谁是普通人
  • 谁是优化的
由于url的依赖性,它没有得到优化,它正在重新提交父项

示例:我在“/namespaces”中有一个视图namespaces视图,该视图打印所有名称空间,当我打开“/namespaces/edit”时,该视图打开模式视图,名称空间将被重新渲染。如何不重新命名名称空间列表

路由器下方

<Route path="namespaces" component={NamespaceList}>
   <Route path="edit" component={NamespaceEdit}/>
   <Route path="create" component={NamespaceCreate}/>
</Route>

名称空间列表组件

function NamespacesList({ push, children }) {
  console.log("rendered !")
  return (
    <div>
      NamespacesList
      <p>
        <Link to="/namespaces/create">Create</Link>
        <br />
        <Link to="/namespaces/edit">Edit</Link>
      </p>
      {children}
    </div>
  )
}
函数名称空间列表({push,children}){
log(“呈现!”)
返回(
命名空间列表

创造

编辑

{儿童} ) }
名称空间创建组件(打印在模型内部)

const NamespacesCreate=function(){
返回(
名称空间创建

返回名称空间列表?

) }
用例: 我在
/templates/create
(名称空间列表在模式的后面绘制,在控制台中
呈现!
被打印,然后当我单击链接返回到父url
/templates
,再次打印
呈现!


因此,有一种方法可以“优化”它,而不是重新提交名称空间列表,或者我需要在两者之间进行选择,或者我错了吗?

不要担心组件的
render()
方法被调用了多少次。Rendering在React中非常便宜,如果内容没有更改,它实际上不会触及DOM

只有当你的应用程序中出现实际性能问题时,才应该开始担心
render()
方法调用,这对于导航之类的一次性操作来说是非常不可能的。例如,你可能希望优化动画或具有大量输入的表单组件

如果出现此问题(不是更早!),您可以查看React优化指南,以及


不过,不要让这无缘无故地使代码复杂化。只有在遇到实际问题时才进行优化,而且不会很快。对于大多数用户的需求,React非常快速,而且
render()
经常调用的方法非常好。

我知道React中的渲染非常便宜,但是有什么解决方案可以避免重新渲染吗?我的父组件再次被重新渲染,在屏幕上显示闪烁,我希望避免重新渲染,这样就不会发生闪烁。@Dan Abramovi如果在“NamespacesList”组件中,我们加载li怎么办通过api调用来自服务器的st?会调用该api吗?
const NamespacesCreate = function() {
  return (
    <Modal>
      NamespacesCreate
      <p>
        <Link to="/namespaces">Back to namespaces list ?</Link>
      </p>
    </Modal>
  )
}