react18+antdPro可编辑表格的使用和数据联动

在这里插入图片描述

在项目中经常会遇到这样的需求 表格数据是需要编辑的 而且有联动的需求,比如 结论是单选形式 选了存疑的 才能选存疑类型 然后会在上面tag显示对应的人数 存疑 > 0 人就显红, 符合要求小于总数就显红 而且选择为符合要求后 还要清空存疑类型

在vue中这很好实现 得益于v-model的双向绑定, 才开始做react项目不久, 确实让我犯了难 只知道用render写自定义组件,但是里面内容不知道咋么写 form中的name咋办能获取到数组中每行的内容,而且数据是单向的。 而且antdPro官方的文档有些晦涩难懂,所以做出来后总结一下,希望也能给大家有所帮助。

首先配置可编辑列表的key

  const defaultData: any[] = [
    // 初始化数据源
    // ...
    { type: '建造师', address: '156', id: '123456', jl: 0, cylx: [] },
    { type: '建师', address: '44', id: 33, jl: 0, cylx: [] },
    { type: '阮经天', address: '44', id: 313, jl: 0, cylx: [] },
    { type: '刘德华', address: '444', id: 343, jl: 0, cylx: [] },
  ];
	// 这表示把数据源中所有的id作为可编辑表格key  也就是全部都可编辑,同时要在可编辑表格中type修改为多选
  const [editableKeys, setEditableRowKeys] = useState<React.Key[]>(() =>
    defaultData.map((item) => item.id),
  );
  //表格的响应式数据
  const [dataSource, setDataSource] = useState(() => defaultData);
  // tag的响应式数据
  const [person, setPerson] = useState<Person>({
    total: defaultData.length,
    meetsRequirement: 0,
    doubt: 0,
    socialSecurityDoubt: 0,
    certificate
  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过监听第一个 Select 的 change 事件,然后根据选择的值来动态更新第二个 Select 的选项。 具体步骤如下: 1. 定义两个 Select 组件,并为它们分别绑定 value 和 options 属性。 ```html <template> <div> <a-select mode="multiple" :value="selectedValues" @change="handleFirstSelectChange" > <a-select-option v-for="option in firstOptions" :key="option.value"> {{ option.label }} </a-select-option> </a-select> <a-select mode="multiple" :value="secondSelectedValues"> <a-select-option v-for="option in secondOptions" :key="option.value"> {{ option.label }} </a-select-option> </a-select> </div> </template> ``` 2. 在组件的 data 中定义两个数组,分别用于存储第一个 Select 和第二个 Select 的选项以及选中的值。 ```javascript export default { data() { return { selectedValues: [], secondSelectedValues: [], firstOptions: [ { label: 'Option 1', value: 1 }, { label: 'Option 2', value: 2 }, { label: 'Option 3', value: 3 }, ], secondOptions: [ { label: 'Option A', value: 'A' }, { label: 'Option B', value: 'B' }, { label: 'Option C', value: 'C' }, ], }; }, // ... }; ``` 3. 实现第一个 Select 的 change 事件处理方法。 ```javascript export default { // ... methods: { handleFirstSelectChange(value) { // 根据选择的值动态更新第二个 Select 的选项 if (value.includes(1)) { this.secondOptions = [ { label: 'Option A', value: 'A' }, { label: 'Option B', value: 'B' }, ]; } else if (value.includes(2)) { this.secondOptions = [ { label: 'Option B', value: 'B' }, { label: 'Option C', value: 'C' }, ]; } else { this.secondOptions = [ { label: 'Option A', value: 'A' }, { label: 'Option C', value: 'C' }, ]; } // 重置第二个 Select 的选中值 this.secondSelectedValues = []; }, }, }; ``` 4. 最后,将第二个 Select 组件的 value 属性绑定到组件的 secondSelectedValues 数据属性上。 ```html <a-select mode="multiple" :value="secondSelectedValues"> <a-select-option v-for="option in secondOptions" :key="option.value"> {{ option.label }} </a-select-option> </a-select> ``` 这样,当用户选择第一个 Select 的选项时,第二个 Select 的选项会根据选择的值动态更新,并且第二个 Select 的选中值会被重置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值