【问题标题】:React/Redux: Failed prop type - Invalid prop objectReact/Redux:失败的道具类型 - 无效的道具对象
【发布时间】: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 中打错字了

标签: json reactjs redux


【解决方案1】:

正如@Arup Rakshit 指出的那样:

.then(tasks =>
    dispatch({
    type: FETCH_TASKS,
    payload: tasks.tasks
    })
);

解决了问题!

【讨论】:

  • 我建议您避免混淆使用data.tasks 并将data 作为then arg 传递。
猜你喜欢
  • 2017-12-23
  • 2017-07-11
  • 1970-01-01
  • 2021-07-27
  • 2019-05-17
  • 2017-07-31
  • 1970-01-01
  • 2019-03-22
  • 1970-01-01
相关资源
最近更新 更多