我是react-redux的新手,我有两个问题。我正在使用eract select plus,如下所示:
<Select
id="portf"
options={opts}
onChange={value => portfolioSelector(value)}
placeholder="Select Portfolio"
/>
但是当我选择另一个值时,即使触发该值,也不会显示该字段。另一个问题是我想为我的选择器设置初始值,所以在我的容器中我写:
const initialValues = fromJS({
market: { label: 'All', value: 'All' },
prodType: { label: 'All', value: 'All' }
});
当我执行我的项目时,我可以看到在状态中这些值确实存在,但不在我的选择字段中显示。对于第二种情况,我使用redux形式的react-select,我用以下方式实现它:
<Select
{...props}
value={props.input.value}
onChange={value => props.input.onChange(value)}
onBlur={() => props.input.onBlur(props.input.value)}
options={props.options}
placeholder={props.placeholder}
/>
答案 0 :(得分:1)
我刚刚解决了这个问题,我发现将Select
抽象到自己的组件中会有所帮助。为此,您可以创建一个如下所示的组件(ReactReduxSelect.jsx
):
import React from 'react';
import Select from 'react-select';
import style from 'react-select/dist/react-select.css';
// define portfolioSelector somehow
// or you could pass it as a property:
// portfolioSelector: React.PropTypes.func
class ReactReduxSelect extends React.Component {
constructor(props) {
super(props);
this.state = {};
}
render() {
return (
<Select
name={this.props.name}
value={this.state.selected}
options={this.props.options}
onChange={(value) => {
this.setState({ selected: value });
portfolioSelector(value);
}}
placeholder={this.props.placeholder}
/>
);
}
}
ReactReduxSelect.propTypes = {
name: React.PropTypes.string,
placeholder: React.PropTypes.string,
options: React.PropTypes.array
};
export default ReactReduxSelect;
以这种方式实现它的很酷的事情是它可以在本机Redux状态树中更新。因此,如果您返回要嵌入此控件(MyTotallySickReactReduxWebpage.jsx
或其他)的页面,则可以导入该组件...
import ReactReduxSelect from './ReactReduxSelect';
然后将其嵌入您的代码......
const ArtifactGenerator = ({
// my totally awesome props
}) => (
// some react redux stuff w/ divs and { and js and all that jazz
<ReactReduxSelect
name="portf"
options={[
{ label: 'Market', value: 'All' },
{ prodType: { label: 'ProdType', value: 'All' }
]}
placeholder="Select Portfolio"
/>
// whatever other groovy code you want in there
);
// the rest of your props and export code or whatever for the page
我不完全确定你在initialValues
那里尝试做什么,语法对我来说不合适,所以我只是写了一些我认为更有可能的东西工作,但你可以很容易地调整它,以满足您的需求。希望这有帮助!