对表单进行了双向绑定却`setFieldsValue`失败

需求

管理后台,点击编辑对应的条目之后,弹出修改框,希望弹出框中预设条目中原来的值
enter description here

实现难点

对表单的输入框进行双向绑定之后使用setFieldsValue却只给了下面的赠送栏赋初始值,并且报错

Warning: Cannot use setFieldsValue until you use getFieldDecorator or getFieldProps to register it.

思路分析

  • 问题剖析:由于弹框中显示的项目是按条件渲染出来的,不同类型的条目有不同的编辑项,所以对于设置条件渲染的部分不能进行form双向绑定,不管是不是满足判断条件,都无法正常绑定
  • 思路转换:
    • 思路一:不改变setFieldsValue,从实现双向绑定的角度来实现
      • 满足条件才渲染dom,改成满足条件就隐藏,将需要隐藏的部分包裹在一个盒子里面,使用display来控制盒子的显隐。这样一来在加载页面的时候dom就是存在的,这样就可以进行双向绑定了。
    • 思路二:依然是条件渲染,但是在对表单中的值进行set的时候要分条件去处理,需要set哪些才去处理

思路一的代码实现

1.原始代码
  • render()中的部分表单,这个FormItem的显示与否是由this.state.ruleType 的值来控制
{console.log("this.state.ruleType  "+this.state.ruleType)}
/**条件渲染*/
		{this.state.ruleType === 'CONSUMPTION' && (   
                        <FormItem {...formItemLayout} label="使用" >
                            {getFieldDecorator('ruleConsumptionType', {
                                rules: customRules,
                                // initialValue: this.state.ruleConsumptionType,
                            })(<Select style={
    {
     
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值