Javascript 当使用React上下文API的其他组件更改状态时,如何防止自动渲染?

Javascript 当使用React上下文API的其他组件更改状态时,如何防止自动渲染?,javascript,reactjs,react-context,Javascript,Reactjs,React Context,我正在使用react with Context API。在上下文中,我有一个名为isAuthenticated的属性,该属性在App.js中用于路由目的。但问题是,当操作isAuthenticated属性时,App.js文件也会重新呈现。我不想有这种行为 如何防止组件自动重新呈现,即使数据更改或状态由其他组件更改 我认为React.memo是我的选择,它是正确的解决方案吗 我的路由配置: <HashRouter> <Switch> <Route

我正在使用react with Context API。在上下文中,我有一个名为isAuthenticated的属性,该属性在App.js中用于路由目的。但问题是,当操作isAuthenticated属性时,App.js文件也会重新呈现。我不想有这种行为

如何防止组件自动重新呈现,即使数据更改或状态由其他组件更改

我认为React.memo是我的选择,它是正确的解决方案吗

我的路由配置:

  <HashRouter>
   <Switch>
     <Route exact path="/" render={() => <Redirect to="/app/dashboard" />} />
     <Route
       exact
       path="/app"
       render={() => <Redirect to="/app/dashboard" />}
     />
     <PrivateRoute path="/app" component={Layout} />
     <PublicRoute path="/login" component={Login} />
     <Route component={Error} />
   </Switch>
 </HashRouter>



} />
}
/>
基于来自上下文api的isAuthenticated值的公共和私有路由


  function PrivateRoute({ component, ...rest }) {
  console.log(isAuthenticated)
  return (
    <Route
      {...rest}
      render={props =>
        isAuthenticated ? (
          React.createElement(component, props)
        ) : (
          <Redirect
            to={{
              pathname: "/login",
              state: {
                from: props.location,
              },
            }}
          />
        )
      }
    />
  );
}

function PublicRoute({ component, ...rest }) {
  console.log(isAuthenticated)
  return (
    <Route
      {...rest}
      render={props =>
        isAuthenticated ? (
          <Redirect
            to={{
              pathname: "/",
            }}
          />
        ) : (
          React.createElement(component, props)
        )
      }
    />
  );
}
}   


函数privaterout({component,…rest}){
console.log(已验证)
返回(
我被认证了(
React.createElement(组件、道具)
) : (
)
}
/>
);
}
函数PublicRoute({component,…rest}){
console.log(已验证)
返回(
我被认证了(
) : (
React.createElement(组件、道具)
)
}
/>
);
}
}   

防止在状态更改后呈现组件不是好方法,因为这种情况不符合React环境的逻辑


我认为您应该更改应用程序业务逻辑。我建议您查看。

是的,但是我如何控制这种情况。您可以通过github或其他方式共享您的更多代码或项目吗?很抱歉,我不能在没有看到代码的情况下发表意见。