Reactjs 从反应组件中移除子组件?
我有一个使用json的组件: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,
{
"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时,它可能会失败。我不知道如果不看更多的代码,我们怎么知道。但要明确的是:显然,我在回答中引用的代码在我看来基本上什么都没做。它在一个数组上调用一个函数,该函数不会改变数组本身,它会把结果扔掉。只是检查一下你是否理解我在回答中所说的要点。我试着澄清一下。我不确定他能不能从他的减速器中返回状态的一个子集?我不确定他能不能从他的减速器中返回状态的一个子集?