作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在为我的 React 应用程序创建一个库,它将处理与 session 相关的每个 API 调用(身份验证、注册、刷新 token 等...),并且该库将需要自行访问 redux 存储以分派(dispatch)操作.这背后的原因是每当用户的访问 token 过期时,我需要使用 setTimeout 调用一个 Action 创建者,该 Action 创建者将调用我的 API 来刷新 token ,并使用新的 session 数据更新应用程序 redux 存储。
所以我想在我第一次调用它时将 dispatch 方法传递给库,但我不确定这是最好的方法。
或者我也可以创建一个 initialize()
方法来将调度传递给库。
import { authenticate } from 'libraries/session';
export function login(email, password) {
return (dispatch) => {
dispatch(loginRequest());
return authenticate(email, password, dispatch) // dispatch is passed here, so I can use it later in the library
.then(() => (
dispatch(loginSuccess())
))
.catch((json) => (
dispatch(loginError());
));
};
};
我还没有尝试过这段代码,现在更像是一次头脑 Storm 。
您对处理此问题的最佳方法有什么建议吗?
谢谢!
最佳答案
我的冲动是交换参数:
import { authenticate } from 'libraries/session';
export function configureLogin(store) {
var {dispatch, subscribe, getState} = store;
return (email, password) => {
dispatch(loginRequest());
return authenticate(email, password, dispatch) // <- I don't why dispatch needs to be included, but I'll take ur word for it
.then(() => dispatch(loginSuccess())
.catch(json => dispatch(loginError()));
};
};
// usage
import { configureLogin } from './service/login';
var store = createStore();
var login = configureLogin(store);
login(email, password);
关于javascript - 如何从图书馆访问 redux store?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36240001/
我是一名优秀的程序员,十分优秀!