ant-desgin 请问怎么通过setFieldsValue设置动态增减表单项的值

新手上路,请多包涵

页面点击编辑按钮,根据后台传过来的keys动态增加表单项,但是无法通过setFieldsValue方式设置初始值,请问应该如何做?

                   {keys.map((k, index) => {
                        console.log(k);
                        console.log(`index: ${index}`);
                        return (
                            <div className="formSelect relatePaper">
                                <FormItem>
                                    {getFieldDecorator(`paperId-${k}`, {
                                        initialValue: ''
                                    })(
                                        <Select showSearch style={{width: 200}}
                                                placeholder="请输入试卷名称"
                                                optionFilterProp="children"
                                                filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}
                                        >

                                            <Option value="">--请选择--</Option>
                                            {
                                                !this.props.examPapers ? "" : this.props.examPapers.map(examPaper =>
                                                    <Option key={examPaper.id}
                                                            value={examPaper.id}>{examPaper.paperName}</Option>)
                                            }
                                        </Select>
                                    )}
                                </FormItem>
                                <FormItem >
                                    {getFieldDecorator(`paperDuration-${k}`, {
                                        initialValue: ''
                                    })(
                                        <Select style={{width: 70}}>
                                            <Option value={-1}>不限</Option>
                                            <Option value={5}>5分钟</Option>
                                        </Select>
                                    )}
                                </FormItem>
                                <FormItem label="分数线">
                                    {getFieldDecorator(`scoreLine-${k}`, {})(<InputNumber style={{width: 50}}
                                                                                          min={0}/>)}
                                </FormItem>
                                <div className="addIcon">
                                    <Button type="ghost" shape="circle" icon="minus"
                                            onClick={() => this.remove(k)}/>
                                </div>
                            </div>
                        );
                    })
                }
                
                

clipboard.png

阅读 13.1k
7 个回答

我是通过 设置动态的属性名方式实现的 [ "prop_" + (() => 42)() ] 输出:

prop_ 42
setFieldsValue({ ["name"+(()=>变量)()]: 值})

初始值,应该是通过这个字段吧initialValue

你这问题问的我有点晕晕的,首先initialValue属性可以设置初始值,但是首次渲染有效,不是首次就无效了。然后setFieldsValue是可以设置表单的值的。如果你看到页面没有生效,看下键值是不是已经改变了,只是组件没有render.

新手上路,请多包涵

遇到同样问题,请问是怎么解决的?

新手上路,请多包涵
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏