如果根据后端返回的数据设置initialValue为一个数组,并且其他不是true的字段checkBox也被选中了,可以尝试通过判断每个选项的值来解决这个问题。

首先,你需要在Form.Item中添加一个onChange事件处理函数,用来处理checkBox的选中状态。在这个事件处理函数中,你可以判断每个选项的值是否与后端返回的数据中的值一致,如果一致则将其设为true,否则设为false。

以下是一个示例代码:

<Form.Item name={item.key} valuePropName={'checked'} onChange={(e) => handleCheckboxChange(e, item.key)}>
  <Checkbox>{item.label}</Checkbox>
</Form.Item>

然后,在handleCheckboxChange函数中,你可以根据后端返回的数据设置checkBox的选中状态。示例代码如下:

const handleCheckboxChange = (e, key) => {
  const checked = e.target.checked;
  const data = [...form.getFieldValue(key)];

  // 根据后端返回的数据设置checkBox的选中状态
  if (checked) {
    data.push(key);
  } else {
    const index = data.indexOf(key);
    if (index > -1) {
      data.splice(index, 1);
    }
  }

  form.setFieldsValue({
    [key]: data,
  });
};

在这个示例代码中,我们首先获取当前checkBox的选中状态,然后获取当前表单项的值。根据后端返回的数据,如果checkBox被选中,则将当前表单项的值添加到data数组中;如果checkBox被取消选中,则将当前表单项的值从data数组中移除。最后,使用form.setFieldsValue方法更新表单项的值。

这样,根据后端返回的数据设置initialValue为一个数组时,其他不是true的字段checkBox就不会被选中了

FormItem name=itemkey valuePropName=checked 根据后端返回的数据设置initialValue未一个数组其他不是true 的字段checkBox也选中了怎么解决

原文地址: http://www.cveoy.top/t/topic/iJlQ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录