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代码可以访问输入标签以便直接添加所需的?
我做了一个使用 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
归档时间: |
|
查看次数: |
28100 次 |
最近记录: |