【问题标题】:React - Ant Design Form-Item name props broke Select valueReact - Ant Design Form-Item name props 破坏了 Select 值
【发布时间】:2021-07-02 07:41:13
【问题描述】:

我正在使用 antD,如果我在表单项中使用 select 组件,并且如果此表单项具有 name 作为道具,我无法为我的选择组件设置值,而页面正在呈现。

把我想说的说清楚,我准备了一个例子,你可以复制粘贴到codeandbox等。

    import React from 'react';
    import ReactDOM from 'react-dom';
    import 'antd/dist/antd.css';
    import './index.css';
    import { Form, Input, Button, Select } from 'antd';
    const { Option } = Select;
    
    
    export const Demo =()=> {
      let formRef = React.createRef();
        return (
          <Form ref={formRef} name="control-ref">   
            <Form.Item 
              label="Gender"
              rules={[
                {
                  required: true,
                },
              ]}
            >
              <Select value="male">
                <Option value="male">male</Option>
                <Option value="female">female</Option>
                <Option value="other">other</Option>
              </Select>
            </Form.Item>       
          </Form>
        );
    }
    
    ReactDOM.render(<Demo />, document.getElementById('container'));

如果您尝试在此示例中为表单项提供名称道具,您的选择组件的初始值将不会 被设置。 更多使用钩子并没有解决我的问题。

【问题讨论】:

    标签: reactjs react-hooks antd react-functional-component


    【解决方案1】:

    我不完全理解你的问题,但我会尽力提供帮助。

    你可以试试useRef

    import React,{useRef, useEffect} from 'react';

     export const Demo =()=> {
         var formRef = useRef();
    
          useEffect(() => {
          formRef.current.setFieldsValue({
         select:"male"
         })
      });
          
        <Form ref={formRef} name="control-ref">   
                    <Form.Item 
                      label="Gender"
                       name="select"
                      rules={[
                        {
                          required: true,
                        },
                      ]}
                    >
                      <Select>
                        <Option value="male">male</Option>
                        <Option value="female">female</Option>
                        <Option value="other">other</Option>
                      </Select>
                    </Form.Item>       
        </Form>
    );}
    

    别忘了给相关Form.Itemname

    【讨论】:

    • 感谢您的回答,但是如果我在此表单中有两个选择组件怎么办...在这种情况下,它将在此表单组件中将所有选择组件设置为男性
    • 将其他选择元素放入Form.Item 范围并更改name 是否值得?
    • 这可能值得.. 另一方面,我找到了第二个问题的解决方案... Gucal 先生非常感谢您的所有帮助您是一个救生员
    猜你喜欢
    • 2016-02-24
    • 2021-02-18
    • 2020-07-19
    • 2014-06-30
    • 2020-08-06
    • 1970-01-01
    • 2021-06-06
    • 1970-01-01
    • 2020-03-09
    相关资源
    最近更新 更多