json - React/Redux:失败的道具类型 - 无效的道具对象
问题描述
我一直试图解决这个问题,但无法解决这个问题。
提取工作正常,但我在从道具映射任务时收到错误。
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 is not a function。
仔细观察:失败的道具类型:提供给tasks
的类型无效的道具,预期的。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: {}
}
}
解决方案
正如@Arup Rakshit 指出的那样:
.then(tasks =>
dispatch({
type: FETCH_TASKS,
payload: tasks.tasks
})
);
修复了问题!
推荐阅读
- javascript - 创建对象特定的数组/列表
- c - 无法过滤源 ip
- dart - 在 dart 中使用可为空字段分配值的更好方法
- vba - Visual Basic for Applications (VBA) 中的复制按钮
- azure-devops - 如何修复拒绝访问:使用的个人访问令牌已过期
- linux - 如果我的交换使用率为 100%,我应该担心吗?
- javascript - 在javascript中处理url和文件输入
- tsql - 我已经每月运行这个代码一年多了,但由于某种原因,我现在才得到这个 SQL group by/aggregate 错误
- python - 为什么 Block 不做超过一件事?
- python - Python:如何将另一个应用程序中的部分文本放入变量中?