Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 从反应组件中移除子组件?_Reactjs_React Redux - Fatal编程技术网

Reactjs 从反应组件中移除子组件?

Reactjs 从反应组件中移除子组件?,reactjs,react-redux,Reactjs,React Redux,我有一个使用json的组件: { "id": 138, "created_at": "2016-08-29T08:20:28+02:00", "updated_at": "2016-08-29T08:20:28+02:00", "title": "Some title.", "description": "", "employee": { "id": 500, "name": "Name,

我有一个使用json的组件:

{
      "id": 138,
      "created_at": "2016-08-29T08:20:28+02:00",
      "updated_at": "2016-08-29T08:20:28+02:00",
      "title": "Some title.",
      "description": "",
      "employee": {
        "id": 500,
        "name": "Name,
        "title": "Code Monkey,
        "geo_code": "UK",
        "image": ""
      },
      "assigned_employee": {
        "id": 34,
        "name": "Nicolai",
        "title": "Developer",
        "geo_code": "uk",
        "image": ""
      },
      "status": {
        "id": 1,
        "name": "Pending",
        "color": "#FAFAFA"
      },
      "priority": {
        "id": 1,
        "name": "Low",
        "color": "#F56954",
        "rank": 0
      },
      "taskables": [
        {
          "id": 1,
          "created_at": "2016-08-22T17:07:33+02:00",
          "type": "partner",
          "partner": {
            "id": 652,
            "created_at": "2012-07-31T09:43:43+02:00",
            "name": "Beierholm",
            "geo_code": "UK",
            "city": "London",
          }
        },
        {
          "id": 2,
          "created_at": "2016-08-22T17:09:07+02:00",
          "type": "lead",
          "lead": {
            "id": 21211,
            "created_at": "2016-08-16T13:08:21+02:00",
            "name": "LeadName",
            "geo_code": "UK",
            "city": "London",
          }
        }
      ]
    },
我有一个事件可以从DOM(父组件)中删除taskables,当我映射状态中的当前项时,在还原器中我有这个事件。但该元素并没有被移除

if(task.id === action.task_id){
    if(task.taskables.length > 0) {
        task.taskables.filter(function(taskable){
            return taskable.id !== action.taskable_id;
        })
    }
}
有什么想法吗?

返回一个新数组

您编码:

    if(task.taskables.length > 0) {
        task.taskables.filter(function(taskable){
        return taskable.id !== action.taskable_id;
    })
这似乎是在扔掉新阵列-您不需要返回它或类似的东西吗

需要澄清的是:对
task.taskables.filter()的调用不起任何作用

它不会改变
task.taskables
数组。它返回一个您未使用的结果。

返回一个新数组

您编码:

    if(task.taskables.length > 0) {
        task.taskables.filter(function(taskable){
        return taskable.id !== action.taskable_id;
    })
这似乎是在扔掉新阵列-您不需要返回它或类似的东西吗

需要澄清的是:对
task.taskables.filter()的调用不起任何作用


它不会改变
task.taskables
数组。它返回一个您未使用的结果。

您可以按如下操作,这样它就可以在不分配新数组的情况下删除该项

if(task.id === action.task_id){
  if(task.taskables.length > 0) {
    return { taskables: task.taskables.filter(taskable =>
      taskable.id !== action.taskable_id
    )}
  }
}  

您可以像下面这样做,这样它就可以在不分配新数组的情况下删除该项

if(task.id === action.task_id){
  if(task.taskables.length > 0) {
    return { taskables: task.taskables.filter(taskable =>
      taskable.id !== action.taskable_id
    )}
  }
}  

这个问题是删除了整个组件,而不是只删除子组件,而且当taskable为null时,它可能会失败。我不知道如果不看更多的代码,我们怎么知道。但要明确的是:显然,我在回答中引用的代码在我看来基本上什么都没做。它在一个数组上调用一个函数,该函数不会改变数组本身,它会把结果扔掉。只是检查一下你是否理解我在回答中所说的要点。我试着澄清一下,这个问题是删除了整个组件,而不是只删除子组件,而且当taskable为null时,它可能会失败。我不知道如果不看更多的代码,我们怎么知道。但要明确的是:显然,我在回答中引用的代码在我看来基本上什么都没做。它在一个数组上调用一个函数,该函数不会改变数组本身,它会把结果扔掉。只是检查一下你是否理解我在回答中所说的要点。我试着澄清一下。我不确定他能不能从他的减速器中返回状态的一个子集?我不确定他能不能从他的减速器中返回状态的一个子集?