首页 > 解决方案 > 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的类型无效的道具,预期的。objectTasksarray

尝试了以下更改:

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: {}
    }
}

标签: jsonreactjsredux

解决方案


正如@Arup Rakshit 指出的那样:

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

修复了问题!


推荐阅读