button根据条件禁用或可用

小王的前端升级之路

button根据条件禁用或可用:

需求:点击编辑,可操作“添加”,新增的字段可以修改删除,已有的字段不能进行任何操作
点击添加一行把表单中的内容渲染到table中
灰色为禁用状态,蓝色可用状态

思路:
1.table中的column用render渲染出修改和删除两个button,button根据条件禁用或可用
2.点击添加一行后弹出模态框,模态框(form表单)点击确定时拿到form表单的数据,在确定的回调中自定义一个字段,我定义的是isAbled,key和value都随便定义,主要目的就是用来区分是否为新增的list
3.在column的render函数中可以拿到当前的行数据
4.给button添加disabled属性,属性值为变量,也就是如果record.isAbled存在,disabled为false(不禁用),不存在则disabled为true

column中操作列代码如下:

 {
      label: "操作",
      prop: "action",
      width: 180,
      align: "center",
      render: (record, text, index) => (//render渲染函数,参数为当前行的值,行数据,行索引
        <>
          <span>
              <Button
                type="link"
                disabled={!record.isAbled}//不存在则disabled为true,禁用button按钮
                onClick={() => this.onModife(record, text, index)}
              >修改
              </Button>
          </span>
           <span>
              <Button
                type="link"
                disabled={!record.isAbled}
                onClick={() => this.onDelete(record, text, index)}
              >删除
              </Button>
          </span>
        </>
      ),
    },

点击添加弹出模态框,保存后的回调:

 onSubmit = async (callback) => {
    let { form } = this.state;
    const dataList = [...this.state.dataSource];//数据源
    const valid = await this.formRef.current.validate();//表单验证
    if (valid) {
        dataList.push({ ...form, isAbled: 1 });//isAbled为自定义字段,用来区分是否为新增的list
        this.setState({ dataSource: dataList });
        Message.success("添加成功!");
      } 
      form = {//清空表单
       name:"";
       age:"";
      };
      this.setState({ form });
      this.add.current.hide();//关闭模态框
    }
    callback();
  };


总结

1.创造条件判断的思维很重要
2.record可以当前行数据别忘记别忘记别忘记

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值