我正在使用this组件进行反应多选。当我使用正常选择时,如果效果很好。我有以下代码。
handleChange = (selectedOption) => {
this.setState({ selectedOption });
console.log(`Selected: ${selectedOption.label}`);
}
render() {
return (
<Select
name="form-field-name"
value={this.state.selectedOption.value}
onChange={this.handleChange}
options={[
{ value: 'one', label: 'One' },
{ value: 'two', label: 'Two' },
]}
/>
);
}
但是,当我添加
multi={true}
时,它将在控制台中提供undefined
。我究竟做错了什么?还有什么要添加到属性中的吗?加上选择框内的值不变。这是一个示例-https://jsfiddle.net/69z2wepo/94309/
最佳答案
如果您阅读链接到的文档,则会发现以下语句here
如果simpleValue为true,则onChange事件将提供一个选定选项的数组或一个逗号分隔的值字符串(例如“ 1,2,3”)
因此,在您的情况下,您必须将数组作为输入,因此您的handleChange
将类似于
handleChange = (selectedOptions) => {
this.setState({ selectedOptions });
selectedOptions.forEach( selectedOption =>
console.log( `Selected: ${selectedOption.label}` )
);
}
然后,您的渲染也将更改为
render() {
return (
<Select
name="form-field-name"
value={this.state.selectedOptions}
onChange={this.handleChange}
options={[
{ value: 'one', label: 'One' },
{ value: 'two', label: 'Two' },
]}
/>
);
}
您想传递选择的值或
undefined
。如果选项中的值是属性value
以外的其他值,则需要为组件提供valueKey
属性,但是默认情况下在"value"
上设置了该属性,因此在您看来需要它。您可以找到的道具here
在这里可以找到可用的版本(请注意,在您的小提琴和示例中,缺少
multi
道具)class Hello extends React.Component {
handleChange(selectedOptions) {
this.setState({ value: selectedOptions });
}
render() {
return (
<Select
name="form-field-name"
value={this.state && this.state.value}
multi={true}
onChange={(...args) => this.handleChange(...args)}
options={[
{ value: 'one', label: 'One' },
{ value: 'two', label: 'Two' },
]}
/>
);
}
}
ReactDOM.render(
<Hello name="World" />,
document.getElementById('container')
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.6.2/react.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/15.6.2/react-dom.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prop-types/15.6.0/prop-types.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/classnames/2.2.5/index.js"></script>
<script src="https://unpkg.com/[email protected]/dist/react-input-autosize.js"></script>
<script src="https://unpkg.com/react-select/dist/react-select.js"></script>
<link rel="stylesheet" href="https://unpkg.com/react-select/dist/react-select.css" type="text/css" />
<div id="container"></div>
关于javascript - react 多选选定值未定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47726172/