添加另一个方法后,dispatch()和if-else语句出现问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了添加另一个方法后,dispatch()和if-else语句出现问题相关的知识,希望对你有一定的参考价值。
我有此操作可以获取存储在Firebase中的特定位置网址的详细信息。
原始代码(版本1)没有问题,我调度authGetToken(),代码识别存储在redux中的令牌(字符串),然后使用它来获取存储的数据。
版本1
return dispatch => {
dispatch(authGetToken())
.then(token => {
return fetch("https://myProject/location.json?auth=" + token);
})
.catch(() => {
alert("No valid token found!");
})
.then(res => {
if (res.ok) {
return res.json();
} else {
throw(new Error());
}
})
};
但是现在我修改了url要求以包含用户UID作为url的一部分,它不起作用。我知道我的逻辑肯定存在缺陷,但我看不到它。
我希望写的是,一旦我调度authGetToken(),令牌调度authGetUserUID然后使用两个字符串(userUID和token)来获取数据。
版本2
return dispatch => {
dispatch(authGetToken())
.then(token => {
dispatch(authGetuserUID())
return fetch("https://myProject/location/"+ userUID + ".json?auth=" + token);
})
.catch(() => {
alert("No valid token found!");
})
.then(res => {
if (res.ok) {
return res.json();
} else {
throw(new Error());
}
})
};
非常感谢你们向我指出显而易见的事情> <因为我的诺布眼睛看不到它。提前致谢。
答案
我认为它可能与userUID
有关,它似乎没有在任何地方初始化。也许尝试这样的事情:
return dispatch => {
dispatch(authGetToken()).then(token => {
dispatch(authGetuserUID()).then(userUID=>{
return fetch("https://myProject/location/"+ userUID + ".json?auth=" + token);
})
})
.catch(() => {
alert("No valid token found!");
})
.then(res => {
if (res.ok) {
return res.json();
} else {
throw(new Error());
}
})
};
以上是关于添加另一个方法后,dispatch()和if-else语句出现问题的主要内容,如果未能解决你的问题,请参考以下文章
Servlet处理业务逻辑,JSP处理视图渲染,Servlet处理请求后,把输出的结果转到JSP页面的解决方法