gpt4 book ai didi

javascript - react-router v4 在页面更改时调度 redux 操作

转载 作者:行者123 更新时间:2023-11-30 14:31:27 24 4
gpt4 key购买 nike

我希望在每次 react-router 页面更改时分派(dispatch)一个 Action ,然后由 reducers 拦截。

我的用例是:我将页面状态保存在 redux 存储中。状态表示为 {loading, finished}。当用户单击按钮时,将向服务器发出请求,loading 变为 true。当响应返回时,正 loading 变为 false 并且 finished 变为 true。当用户离开页面时,我希望将状态重置为其初始值(loading=falsefinished=).

以下答案很好,但不再适用于 v4,因为 onEnter onChangeonLeave 已被删除。

React Router + Redux - Dispatch an async action on route change?

编辑:最好的解决方案是可扩展的。将来会有多个这样的页面,每个页面的状态都应该在页面导航时重置

谢谢!

最佳答案

您可以单独创建您的 history 实例,并监听它并在发生变化时分派(dispatch)一个 Action 。

示例

// history.js
import createHistory from 'history/createBrowserHistory';

const history = createHistory();

history.listen(location => {
// Dispatch action depending on location...
});

export default history;

// App.js
import { Router, Route } from 'react-router-dom';
import Home from './components/Home';
import Login from './components/Login';
import history from './history';

class App extends React.Component {
render() {
return (
<Router history={history}>
<div>
<Route exact path="/" component={Home} />
<Route path="/login" component={Login} />
</div>
</Router>
)
}
}

关于javascript - react-router v4 在页面更改时调度 redux 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51109067/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com