【问题标题】:FieldArray fields.length not showing actual size of fields.lengthFieldArray fields.length 未显示 fields.length 的实际大小
【发布时间】: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,现在这对我来说不是问题,但你认为这是一个错误吗?我修改了小提琴以重现错误
  • webpackbin.com/VkFLH_3Xf修改小提琴

标签: reactjs redux redux-form


【解决方案1】:

shouldComponentUpdate 返回 false 导致了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多