Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么在react路由器dom 6中使用导航导致浪费渲染_Javascript_Reactjs_React Router Dom - Fatal编程技术网

Javascript 为什么在react路由器dom 6中使用导航导致浪费渲染

Javascript 为什么在react路由器dom 6中使用导航导致浪费渲染,javascript,reactjs,react-router-dom,Javascript,Reactjs,React Router Dom,我使用新的路由器-dom@6.0.0-beta.0 有一个布局: export function Layout() { return ( <div> <TopBar /> <div> click on view2, view1 links and look at console <Outlet /> </div> </div> );

我使用新的路由器-dom@6.0.0-beta.0

有一个布局:

export function Layout() {
  return (
    <div>
      <TopBar />
      <div>
        click on view2, view1 links and look at console
        <Outlet />
      </div>
    </div>
  );
}
导出函数布局(){
返回(
单击view2、view1链接并查看控制台
);
}
使用纯组件顶栏:

const TopBar = () => {
  const navigate = useNavigate(); //This line 1

  const onLogout = () => {
    navigate("/");  //This line 2
  };

  return (
    <div>
      {console.log("TOPBAR")}
      <button onClick={onLogout}>out</button>
    </div>
  );
};
export default React.memo(TopBar);
const-TopBar=()=>{
const navigate=useNavigate();//这一行1
常量onLogout=()=>{
导航(“/”;//这一行2
};
返回(
{console.log(“TOPBAR”)}
出来
);
};
导出默认的React.memo(顶栏);
和包含两个相互链接的页面的容器:

export const View1 = () => {
  return (
    <div>
      <Link to="/view2">view2</Link>;
    </div>
  );
};

export const View2 = () => {
  return (
    <div>
      <Link to="/">view1</Link>
    </div>
  );
};
export const View1=()=>{
返回(
视图2;
);
};
导出常量视图2=()=>{
返回(
视图1
);
};

当我点击页面链接时,返回TopBar execute(控制台日志TopBar)的fn,但当我从TopBar(我在组件中注释)中删除这两行时,它不会发生

TopBar和容器是分开的,我不想在容器中的某些内容发生变化时渲染,我知道react比较虚拟dom和不渲染实际dom,但TopBar是纯的,没有理由再次执行,我认为useNavigate钩子会导致TopBar上的渲染浪费,对不对?如果是,我该怎么办