ale*_*ngn 5 javascript reactjs react-native redux
我正在为我的 React 应用程序创建一个库,它将处理与会话相关的每个 API 调用(身份验证、注册、刷新令牌等...),并且该库需要自行访问 redux 存储来调度操作。其背后的原因是每当用户的访问令牌过期时,我需要使用 setTimeout 调用一个操作创建者,该操作创建者将调用我的 API 来刷新令牌,并使用新的会话数据更新应用程序 redux 存储。
所以我想在第一次调用它时将调度方法传递给库,但我不确定这是最好的方法。
或者我也可以创建一个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());
));
};
};
Run Code Online (Sandbox Code Playgroud)
我还没有尝试过这段代码,现在更多的是集思广益。
您对处理这个问题的最佳方法有什么建议吗?
谢谢!
我的冲动是交换参数:
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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1836 次 |
| 最近记录: |