使用 ANTD React 中的全选选项进行多选

Ren*_*ith 4 multi-select reactjs antd

我有一个表单,其中有一个多选下拉 antd 组件。在更改全选选项时,我需要选择最多 5 个标签的所有可用选项。

请在此处的代码和框中找到我的代码链接 https://codesandbox.io/s/summer-wind-1swto

最大标记为 5 由 handleSelectAll 函数指定,在选择选项时调用

<Form.Item label= 'Column Names'>
                  {getFieldDecorator(`columnNames`, {
                    validateTrigger: ['onChange', 'onBlur'],
                    rules: [
                      {
                        required: true,
                        message: "Please input the Column Names!",
                      },
                    ],
                  })(
                    <Select
                        mode="multiple"
                        placeholder="Please select Columns"
                        maxTagCount={5}
                        onChange={this.handleSelectAll}
                        >
                          <Option key="all" value="all">---SELECT ALL---</Option>
                        {children}
                        </Select>
                  )}
</Form.Item>
Run Code Online (Sandbox Code Playgroud)

预期的:

On select all is clicked all the options to be selected
On unchecking it all options to be removed
Run Code Online (Sandbox Code Playgroud)

Her*_*tel 6

在你的情况下,setFieldsValue是行不通的。但是您可以使用getValueFromEvent.

handleSelectAll = (value) => {
    if (value && value.length && value.includes("all")) {
        if (value.length === all.length + 1) {
            return [];
        }
        return [...all];
    }
    return value;    
}
Run Code Online (Sandbox Code Playgroud)
<Form.Item label='Column Names'>
    {getFieldDecorator(`columnNames`, {
        validateTrigger: ['onChange', 'onBlur'],
        getValueFromEvent: this.handleSelectAll,
        rules: [
            {
                required: true,
                message: "Please input the Column Names!",
            },
        ],
    })(
        <Select
            mode="multiple"
            placeholder="Please select Columns"
            maxTagCount={5}
            onChange={this.handleSelectAll}
        >
            <Option key="all" value="all">---SELECT ALL---</Option>
            {children}
        </Select>
    )}
</Form.Item>
Run Code Online (Sandbox Code Playgroud)

这将起作用。handleSelectAll事件返回使用getValueFromEvent和初始化选择组件分配的值。

  • 什么是“getFieldDecorator”以及如何使用它? (2认同)