使用 react-select 设置默认值不起作用

IT技术 javascript arrays reactjs react-select
2021-05-14 10:21:21

我有一个简单的 React 组件,它获得一个初始状态:

this.state = {
  currentObject: {
    isYounger: false
  }
}

然后我react-select使用默认值渲染 a this.state.currentObject.isYounger

    <Select
      name={"age"}
      value={this.state.currentObject.isYounger}
      onChange={newValue => this.addIsYoungerValue(newValue)}
      options={isYoungerOptions}
    />

由于某种原因,该值未设置。为什么是这样?

代码沙盒

版本:

"react-select": "^2.4.2",

3个回答

这里的问题不在于状态选择,实际问题是标签没有显示出来。

因此,根据您的addIsYoungerValue功能,您将 的值设置this.state.currentObject.isYounger为整个对象。{ value: true, label: "Younger" }所以,这个问题可以通过改变初始状态的值来解决。

this.state = {
      array: [],
      currentObject: {
        isYounger: { value: true, label: "Younger" }
      }
    };

和 hurrey,将显示默认值标签..

您的defaultValuevalue必须是对象。在你这样的情况下:

defaultValue={isYoungerOptions[0]}

或者

this.state = {
   array: [],
   currentObject: {
     isYounger: { value: "true", label: "Younger" }
   }
 };

这里有一个活生生的例子

有一种替代方法可以使用value作为您的defaultValue就我而言,我使用了“id”和“industry”而不是“label”和“value”

this.state = {
     interested_industries: [{id:"ANY", industry:"ANY"}]
}

在 Select 组件中:-

<Select 
    name="interested_industries"
    options={industries}
    value={interested_industries}
    getOptionLabel={ x => x.id}
    getOptionValue={ x => x.industry}
    onChange={this.handleSelect}
    isMulti
/>