需要反应选择下拉菜单

Jak*_*won 6 reactjs react-select

我是新来的反应。

我正在尝试使用下面的库来使用下拉菜单。

当我添加“required”属性时,它不会使用表单标记对其进行验证。

https://www.npmjs.com/package/react-select

import React from 'react';
import Select from 'react-select';

const options = [{
        value: 'chocolate',
        label: 'Chocolate'
    },
    {
        value: 'strawberry',
        label: 'Strawberry'
    },
    {
        value: 'vanilla',
        label: 'Vanilla'
    },
];

class App extends React.Component {
    state = {
        selectedOption: null,
    };
    handleChange = selectedOption => {
        this.setState({
            selectedOption
        });
        console.log(`Option selected:`, selectedOption);
    };
    render() {
        const {
            selectedOption
        } = this.state;

        return ( <
            Select value = {
                selectedOption
            }
            onChange = {
                this.handleChange
            }
            options = {
                options
            }
            //required
            />
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

当我从控制台查看它时,它显示输入标签被一堆 div 包裹着。有没有办法访问组件的输入?或者是否有一个javascript代码可以访问输入标签以便直接添加所需的?

在此输入图像描述

bar*_*n.A 2

我做了一个使用 Ant-Design 表单的小例子,请在codesandbox 上检查

import React from "react";
import { Form, Select, Button } from "antd";
import "./styles.css";
import "antd/dist/antd.css";
const { Option } = Select;

const AppWithForm = props => {
  const { getFieldDecorator } = props.form;

  const handleSubmit = () => {
    props.form.validateFields((err, values) => {
      if (!err) {
        console.log("Received values of form: ", values);
      } else console.log("form is NOT valid");
    });
  };

  const onChange = value => {
    console.log(`selected ${value}`);
  };

  return (
    <div className="App">
      <Form layout="inline">
        <Form.Item>
          {getFieldDecorator("dropdown", {
            rules: [{ required: true, message: "Please select a person!" }]
          })(
            <Select
              showSearch={false}
              style={{ width: 200 }}
              placeholder="Select a person"
              optionFilterProp="children"
              onChange={onChange}
            >
              <Option value="jack">Jack</Option>
              <Option value="lucy">Lucy</Option>
              <Option value="tom">Tom</Option>
            </Select>
          )}
        </Form.Item>
        <Form.Item>
          <Button type="primary" onClick={handleSubmit}>
            Save
          </Button>
        </Form.Item>
      </Form>
    </div>
  );
};

const App = Form.create({})(AppWithForm);

export default App;
Run Code Online (Sandbox Code Playgroud)

你应该用 ant-design Form HOC 包装你的组件,它将很多函数作为 props 传递给你的组件,这样你就可以使用 'getFieldDecorator', 'validateFields' 来处理你的表单

https://codesandbox.io/s/trusting-microservice-11418