我从我的组件调用 getLocalToken 操作,该操作从 AsyncStorage 中读取字符串。以下是我如何调用该函数。
componentWillMount() {
this.props.getLocalToken();
console.log("CWM", this.props.auth);
}
以下是我的行动
export const getLocalToken = async () => {
try {
const localToken = await AsyncStorage.getItem('@auth:localToken');
const mobileNumber = await AsyncStorage.getItem('@auth:mobileNumber');
}
catch (e) {
console.log('Failed to read token', e);
}
return (dispatch) => {
console.log("get token");
dispatch({
type: types.GET_LOCALTOKEN_SUCCESS,
payload: { localToken: this.localToken, mobileNumber: this.mobileNumber }
});
}
}
对于这段代码,我得到 Action必须是普通对象。使用自定义中间件进行异步功能。错误。
答案 0 :(得分:2)
Actions是纯JavaScript对象。操作必须具有指示正在执行的操作类型的type属性。通常应将类型定义为字符串常量。有关更多信息,请阅读redux-documentation。
如果您想要异步请求或其他副作用,则必须使用middleware
。最受欢迎的是:
所有这些都以不同的方式处理异步请求。 Redux-thunk
对初学者友好,但在我看来,对复杂的项目和测试感到痛苦。