反应 select 无法识别默认值
react select not recognizing default value
我有一个无法识别默认值选项的 React select 组件。
代码如下所示:
renderPlans(){
if(this.props.plans){
let list = this.props.plans.map(item=>{
return ({label:item.description, value:item.id})
});
return(
<Select
name= "tile-plans"
value= {this.state.selected}
classNamePrefix='react-select-container'
options={list}
defaultValue={list[0]}
onChange={(e) => { e ? this.setState({selected: e.value}) : this.setState({selected: ''}) }}
/>
)
}
}
根据我在其文档中可以找到的所有内容,这是提供它的格式。基本上,我只希望第一个选项始终是默认选项,因为有时只有一个选项,并且有人需要 select 下拉列表是没有意义的。我还有一个正在加载的图表,所以如果一个选项是 selected,该图表将不会加载。
这不是一个重复的问题,因为我知道你可以这样做:
value= {this.state.selected ? this.state.selected:list[0].label}
但它不工作。输入在加载时保持空白。
文档指出 "If you don't provide these props, you can set the initial value of the state they control",其中引用了您提供的 value
道具。
您可以在创建组件时将 selected
设置为 list
中的第一个元素。
例子
class App extends React.Component {
state = {
selected: this.props.list[0]
};
handleChange = selected => {
this.setState({ selected });
};
render() {
const { selected } = this.state;
return (
<Select
value={selected}
onChange={this.handleChange}
options={this.props.list}
/>
);
}
}
ReactDOM.render(
<App
list={[
{ value: "chocolate", label: "Chocolate" },
{ value: "strawberry", label: "Strawberry" },
{ value: "vanilla", label: "Vanilla" }
]}
/>,
document.getElementById("root")
);
我有一个无法识别默认值选项的 React select 组件。 代码如下所示:
renderPlans(){
if(this.props.plans){
let list = this.props.plans.map(item=>{
return ({label:item.description, value:item.id})
});
return(
<Select
name= "tile-plans"
value= {this.state.selected}
classNamePrefix='react-select-container'
options={list}
defaultValue={list[0]}
onChange={(e) => { e ? this.setState({selected: e.value}) : this.setState({selected: ''}) }}
/>
)
}
}
根据我在其文档中可以找到的所有内容,这是提供它的格式。基本上,我只希望第一个选项始终是默认选项,因为有时只有一个选项,并且有人需要 select 下拉列表是没有意义的。我还有一个正在加载的图表,所以如果一个选项是 selected,该图表将不会加载。
这不是一个重复的问题,因为我知道你可以这样做:
value= {this.state.selected ? this.state.selected:list[0].label}
但它不工作。输入在加载时保持空白。
文档指出 "If you don't provide these props, you can set the initial value of the state they control",其中引用了您提供的 value
道具。
您可以在创建组件时将 selected
设置为 list
中的第一个元素。
例子
class App extends React.Component {
state = {
selected: this.props.list[0]
};
handleChange = selected => {
this.setState({ selected });
};
render() {
const { selected } = this.state;
return (
<Select
value={selected}
onChange={this.handleChange}
options={this.props.list}
/>
);
}
}
ReactDOM.render(
<App
list={[
{ value: "chocolate", label: "Chocolate" },
{ value: "strawberry", label: "Strawberry" },
{ value: "vanilla", label: "Vanilla" }
]}
/>,
document.getElementById("root")
);