Javascript 当使用React上下文API的其他组件更改状态时,如何防止自动渲染?
我正在使用react with Context API。在上下文中,我有一个名为isAuthenticated的属性,该属性在App.js中用于路由目的。但问题是,当操作isAuthenticated属性时,App.js文件也会重新呈现。我不想有这种行为 如何防止组件自动重新呈现,即使数据更改或状态由其他组件更改 我认为React.memo是我的选择,它是正确的解决方案吗 我的路由配置: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
<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或其他方式共享您的更多代码或项目吗?很抱歉,我不能在没有看到代码的情况下发表意见。