Redux dispatch 永远不会在 React Native 应用程序中运行
Posted
技术标签:
【中文标题】Redux dispatch 永远不会在 React Native 应用程序中运行【英文标题】:Redux dispatch never run in React Native app 【发布时间】:2022-01-02 03:27:27 【问题描述】:我在一个 react 本机应用程序上有一个身份验证操作,它必须在身份验证期间执行另一个操作,但它永远不会执行 (dispatch(getMobiles())
)。我不理解为什么。你有什么想法吗?
如果我的身份验证顺利,我想立即检索我的新用户的数据,所以我想执行另一个操作 getMobiles()。
提前感谢:)
身份验证操作
export const authentication = (
username: String,
password: String,
label: String,
synchro: Boolean,
url: String,
) =>
return dispatch =>
dispatch(type: LOGIN.PENDING, payload: '');
const type = UDA_URL_LIST.map(uda =>
if (uda.url === url)
return uda.name;
)
.join()
.replace(/[, ]+/g, ' ')
.trim();
fetchUser(url, username.trim(), password.trim())
.then(response =>
if (!response.err)
const newUser =
...response,
label,
type,
synchro,
;
dispatch(type: LOGIN.SUCCESS, payload: newUser);
// not dispatched !
return dispatch(getMobiles(url, response.key, newUser.userId));
)
.catch(err => dispatch(type: LOGIN.ERROR, payload: err));
;
;
getMobiles
export const getMobiles = (
url: String | null = null,
token: String,
userId: String,
) =>
return dispatch =>
dispatch(type: MOBILES.PENDING, payload: '');
fetchMobiles(url, token)
.then(mobilesList =>
dispatch(
type: MOBILES.SUCCESS,
payload: mobilesList.data,
meta: userId,
);
)
.catch(err => alert(err));
;
;
;
【问题讨论】:
【参考方案1】:您在 getMobiles 中的代码需要使用参数调度进行第二次调用,
尝试使用getMobiles(url, response.key, newUser.userId)(dispatch)
【讨论】:
感谢您的回复,但不幸的是它对我不起作用以上是关于Redux dispatch 永远不会在 React Native 应用程序中运行的主要内容,如果未能解决你的问题,请参考以下文章
Redux 调用 dispatch 函数但它不会改变 store