Ste*_*eve 1 state reactjs react-router
我有一个反应应用程序与主App.js文件,保持我的初始状态.然后我设置了一些路线来浏览我的应用程序.
在其中一条路线中,我有一个按钮,按下该按钮可处理设定状态.我知道这可行,因为我已经控制台记录了状态的变化.但是,它还要求:
window.location.href = '/';
Run Code Online (Sandbox Code Playgroud)
然后,我们将我们发送到我们的主页.但是,一旦主页呈现状态,将恢复其初始设置,如App.js中所述.我不知道为什么一旦我被转发到网站的另一部分,状态就不会得到维护.鉴于我正在使用react-router这是否意味着我需要使用redux来处理应用程序的状态?
发生这种情况是因为您使用窗口对象重定向而不是反应路由器.您不需要使用redux.要使用react路由器,您需要使用其历史记录方法.然后在组件内部使用如下:
this.props.history.push('/');
Run Code Online (Sandbox Code Playgroud)
例如,采取以下反应功能组件:
const LoginButton = ({ history }) => (
<button onClick={() => { history.push('/login'); }} >
Log in
</button>
);
Run Code Online (Sandbox Code Playgroud)
说明:上面的组件,从props中解构历史,然后用它来重定向到登录页面
链接到历史api:https://reacttraining.com/react-router/web/api/history
| 归档时间: |
|
| 查看次数: |
3126 次 |
| 最近记录: |