Redux reducer删除数组元素失败
Redux reducer failing to remove array element
我有问题试图让我的减速器在Redux中正确工作。我是Redux的新手,所以我可能会错过一些简单的东西,但我已经玩了一段时间,不知道出了什么问题。
下面是我的流程:
定义参数:
首先定义所需的索引值。当被记录时,这将返回正确的数字…
const thisCommentIndex = parseInt(comments.indexOf(comment))
函数调用:
<div onClick={this.props.removeComment.bind(null, thisCommentIndex)}></div>
行动:
export function removeComment(index) {
return {
type: 'REMOVE_COMMENT',
index
}
}
减速器:
function comments(state = [], action) {
switch(action.type) {
case 'REMOVE_COMMENT' :
console.log('removing comment with index of ' + action.index)
return [
...state.slice(0, action.index), // why isn't this working???
...state.slice(action.index)
]
default :
return state
}
return state;
}
当I console.log('removing COMMENT with index of ' + action.index)
时,记录动作。索引正确,就是我期望的整数。但是该函数并没有像预期的那样删除元素。
奇怪的是,如果我只是传递数组索引,它工作得很好(删除数组元素)。(我只是这样做,但由于我设置我的应用程序的方式,它不会在这种情况下工作)。
我错过了什么吗?
你少了一个+1
…
return [
...state.slice(0, action.index),
...state.slice(action.index + 1) // <--- need to actually skip what you want to remove
]
@Jack是正确的。另一个选择是使用Array.filter
代替:
return state.filter( (item, index) => index !== action.index)
您可能对Redux文档中新的Structuring Reducers部分感兴趣。特别是,不可变更新模式页面有一些相关的例子。
如果您想要删除多个项目,那么您可以反向处理您的数组
for (var i = this.props.items.length -1; i >= 0; --i) {
if(this.props.items[i]["selected"]) {
this.props.deleteSelectedItem(i);
}
}
相关文章:
- 在函数中添加数组元素的数值
- 访问JSON对象内部的数组元素
- Mongoose-在更新中删除数组元素
- javascript数组元素是否知道其封闭数组
- 将数组元素附加到FormData dos'不适用于Firefox 15
- 如何在javascript中使用click函数选择数组元素
- 如何在JavaScript中剥离数组元素中的非整数
- 消隐数组元素是否生成自己的属性
- 如何使一个Math.random数组元素比另一个数组元素更有可能被选中
- 在Codrops的内容中添加数组元素展开缩略图网格预览
- 如何使用Jquery水平打印表中的数组元素,并在某个元素之后垂直打印
- 如何访问数组中的数组元素(JavaScript)
- 生成ACF标记位置的数组(元素列表后缺少])
- validate.js验证数组元素
- JavaScript Unshift EACH 数组元素
- 如何在加号运算符之后选择数组元素的一部分
- 访问标记图标的图像数组元素
- JavaScript 合并相同的数组元素
- Redux reducer删除数组元素失败
- JS读取即将到来的数组元素失败