Ark*_*rka 3 node.js reactjs redux fetch-api node-fetch
这是整个文件的链接 - asyncActions.js
带有 axios api 的部分 -
const fetchUsers = () => {
return function (dispatch) {
dispatch(fetchUsersRrequest());
axios
.get("https://jsonplaceholder.typicode.com/users")
.then((res) => {
// res.data is the array of users
const users = res.data.map((user) => user.id);
dispatch(fetchUsersSuccess(users));
})
.catch((error) => {
// error.message gives the description of message
dispatch(fetchUsersFaliure(error.message));
});
};
};
Run Code Online (Sandbox Code Playgroud)
函数输出 -
{ loading: true, users: [], error: '' }
{
loading: false,
users: [
1, 2, 3, 4, 5,
6, 7, 8, 9, 10
],
error: ''
}
Run Code Online (Sandbox Code Playgroud)
用 fetch api 替换该部分 -
const fetchUsers = () => {
return function (dispatch) {
dispatch(fetchUsersRrequest());
fetch("https://jsonplaceholder.typicode.com/users")
.then((res) => {
const users = res.json().map((user) => user.id);
console.log(users);
dispatch(fetchUsersSuccess(users));
})
.catch((error) => {
dispatch(fetchUsersFaliure(error.message));
});
};
};
Run Code Online (Sandbox Code Playgroud)
输出 -
{ loading: true, users: [], error: '' }
{
loading: false,
users: [],
error: 'res.json(...).map is not a function'
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么 ?为什么我无法映射数据?
调用res.json()将返回一个 Promise。您需要添加第二个 then 块:
fetch("https://jsonplaceholder.typicode.com/users")
.then((res) => res.json())
.then((res) => {
const users = res.map((user) => user.id);
console.log(users);
dispatch(fetchUsersSuccess(users));
})
.catch((error) => {
dispatch(fetchUsersFaliure(error.message));
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2539 次 |
| 最近记录: |