Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 反应选择选项未被选中_Javascript_Reactjs_Redux_React Select - Fatal编程技术网

Javascript 反应选择选项未被选中

Javascript 反应选择选项未被选中,javascript,reactjs,redux,react-select,Javascript,Reactjs,Redux,React Select,我正在使用这个软件包。当我选择一个下拉选项时,我的onChange操作会正常工作并更新状态。但该选项未被选中。也就是说,它不显示映射到状态的值,而只显示默认占位符 我想我遗漏了一些小东西,但我有一些新的反应和重复,我不确定这可能是什么。提前感谢您的帮助:) Body.js <Select id="input-field" value={this.props.create.selectedOption} onChange={this.props.addOption} options={

我正在使用这个软件包。当我选择一个下拉选项时,我的onChange操作会正常工作并更新状态。但该选项未被选中。也就是说,它不显示映射到状态的值,而只显示默认占位符

我想我遗漏了一些小东西,但我有一些新的反应和重复,我不确定这可能是什么。提前感谢您的帮助:)

Body.js

<Select id="input-field" value={this.props.create.selectedOption} onChange={this.props.addOption}
   options={[
      { value: 'navigate', label: 'Navigate to <URL>' },
      { value: 'enter', label: 'I enter <InputValue> to the <ElementKey>' },
      { value: 'click', label: 'Click on <ElementKey>' },
      ]}
/>


const mapStateToProps = (state, ownProps) => {
    return {
        create: state.reducerCreate
    }
}

回答我自己的问题,我发现仅仅传递所选的选项标签/值是不够的,我们需要传递整个对象

{ value: 'navigate', label: 'Navigate to <URL>' }
{value:'navigate',label:'navigate to'}
然后我们将select标记的value属性映射到state的值

更新了Body.js

<Select id="input-field" componentClass="select" value={this.props.create.selectedOption.value} onChange={this.props.addOption}


const mapDispatchToProps = (dispatch, ownProps) => {
    return {
        addOption: (option) => {
            console.log(option)
            dispatch(addOption(option))
        }
    };
};
{
返回{
addOption:(选项)=>{
console.log(选项)
调度(添加选项(选项))
}
};
};

您的redux商店是否正在更新?最好使用
状态
而不是
道具
来控制
组件。是的,商店正在更新@DaneThen可能
此.props.create.selectedOption
是否
未定义
?正如我所说的,最好使用
this.state
来管理
Select
组件,因为它只会被重新渲染,而不是更改
道具
<Select id="input-field" componentClass="select" value={this.props.create.selectedOption.value} onChange={this.props.addOption}


const mapDispatchToProps = (dispatch, ownProps) => {
    return {
        addOption: (option) => {
            console.log(option)
            dispatch(addOption(option))
        }
    };
};