【问题标题】:react-select handle onChange with propsreact-select 使用道具处理 onChange
【发布时间】:2018-05-20 01:36:44
【问题描述】:

我在子组件中使用 react-select,但希望将 Select 值存储在父组件的状态中。

感谢我必须将 onChange 存储在 state 中,然后将其传递给 Select 值,但我想将此临时 onChange 状态保留在子组件而不是父组件中。

所以问题是我如何从孩子的 onChange 状态设置父状态(进入道具)。

父组件

campaignName (campaign){
  //will setState here
   console.log(campaign)
  }
...
<FormGroup>
  <Campaign
    campaignName={this.campaignName.bind(this)}
    campaignOptions={code in here that sets option}
   />
</FormGroup>

子组件

updateValue (newValue) {
    this.setState({
        selectValue: newValue,
  // how do I set the parent state from this 
    });

<Select
   onChange={this.updateValue}
   value={this.props.campaignName}
   options={this.props.campaignOptions}
/>

【问题讨论】:

    标签: javascript reactjs react-select


    【解决方案1】:

    将处理 onChange 的函数直接从父级传递给子级:

    父组件

    handleSelect(e) {
       this.setState({
           selectValue: e.target.value,
       });
    }
    
    render() {
        <ChildComponent selectOnChange={this.handleSelect} />
    }
    

    子组件

    <Select
       onChange={this.props.selectOnChange}
       value={this.props.campaignName}
    />
    

    或者(如果你想让方法留在孩子身上)

    updateValue(e) {
       this.props.selectOnChange(e); //call the passed props here
    }
    
    <Select
       onChange={this.updateValue}
       value={this.props.campaignName}
    />
    

    【讨论】:

    • 谢谢,但我正在探索如何将 onChange 存储在不从父级传入的子级中
    • 我已经更新了我的答案,我添加了另一个选项来解决您的问题。
    • 如果它解决了您的问题,请不要忘记将其标记为正确答案,以便其他有相同问题的人可以参考此问题。谢谢你:)
    • 谢谢会做Tenten 我现在正在处理它
    • 父级没有 selectOnChange 道具,只有campaignName。我理解 react-select 工作的方式是 onChange 道具存储在 value 道具然后使用的状态(例如 selectValue)中。当我尝试用活动名称替换您的 selectOnChange 时,我收到一个未定义的错误
    猜你喜欢
    • 2021-07-04
    • 1970-01-01
    • 1970-01-01
    • 2020-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-24
    • 2022-12-15
    相关资源
    最近更新 更多