【发布时间】:2016-12-15 21:44:24
【问题描述】:
我有一个 FieldArray,我想使用 fields.swap(indexA, indexB) 和 Field 内的按钮交换其中的字段
交换分叉很好,但是当我想检查作为道具收到的字段的长度时遇到了问题。这个长度总是等于我点击的项目的索引。 (如果我点击第一项 - fields.length 将等于 1,第十 - 十,即使字段数组中有 20 个项目)
我的代码的简化版本是这样的。是我做错了什么,还是 redux-form 有问题?
<FieldArray name="Fields" component={renderFields} />
...
const renderFields= ({ fields, meta: { error } }) => {
const handleSwap = function (currentIndex, nextIndex) {
//This next line is where I meet the problem
//fields.length is always equal to the index of item I clicked
if(nextIndex < fields.length )
{
fields.swap(currentIndex, nextIndex)
}
}
return (
<div>
{fields.map((field, index) =>
<Field
onSwap={handleSwap}
....
</Field>
</div>
)
}
可能是我如何在渲染函数中定义handleSwap 的问题?
【问题讨论】:
-
redux-form没有问题,我无法重现问题 => see this fiddle,它可以正常工作... -
@Freez shouldComponentUpdate 返回 false 导致了这个问题,我修改了我的 shouldComponentUpdate,现在这对我来说不是问题,但你认为这是一个错误吗?我修改了小提琴以重现错误
标签: reactjs redux redux-form