【发布时间】:2019-02-07 19:21:50
【问题描述】:
我一直在尝试解决这个问题,但无法理解它。
提取工作正常,但我在从道具映射任务时收到错误。
JSON:
{
"tasks": [
{
"uuid": "d5704a95-a7f4-441f-a962-70f3962ec137",
"title": "Finish presentation task",
"is_completed": false,
"created_at": "2018-09-02T14:02:04+00:00",
"url": "http://****/todos/d5704a95-a7f4-441f-a962-70f3962ec137"
}
]
}
现在在 fetch 之后调度任务:
export const fetchTasks = () => dispatch => {
fetch('****', {
headers: {
"Authorization" : `****`,
'content-type': 'application/json'
}
})
.then(res => res.json())
.then(tasks =>
dispatch({
type: FETCH_TASKS,
payload: tasks
})
);
};
接着是:
Tasks.propTypes = {
fetchTasks: PropTypes.func.isRequired,
tasks: PropTypes.array.isRequired,
newTask: PropTypes.object
}
这会返回一个错误:this.props.tasks.map 不是函数。
仔细观察:道具类型失败:object 类型的无效道具object 提供给Tasks,预期为array。
尝试了以下更改:
tasks: PropTypes.array.isRequired
tasks: PropTypes.object.isRequired // array > object
仍然返回相同的错误。
Redux devtools 在 State 中显示以下内容:
{
tasks: {
items: {
tasks: [
{
uuid: 'd5704a95-a7f4-441f-a962-70f3962ec137',
title: 'Finish presentation task',
is_completed: false,
created_at: '2018-09-02T14:02:04+00:00',
url: 'http://****/todos/d5704a95-a7f4-441f-a962-70f3962ec137'
}
]
},
item: {}
}
}
【问题讨论】:
-
不应该是
payload: tasks.data吗? -
这导致:{ tasks: { item: {} } } 但是 tasks.tasks 解决了问题,谢谢!
-
是的...我在 cooment 中打错字了