私はスタンドアロンコンポーネントMultiSelect
を作成しようとしています(そこにはコンポーネントがありますが、その方法を学びたいと思います)。ローカルの状態のコンポーネントがReact Reduxで更新されない
選択した値をその状態に保存する方法で作成しました。
私は私のコンテナから、このようにそれを呼び出す:私は、コンテナの小道具のための正しい値を取得するアクションをディスパッチすると
<MultiSelect
items={ this.props.boards }
label="Boards"
value={ this.props.selectedBoards }
onChange={ e => this.onChange(e) } />
。 My MultiSelectは、正しいオプションを表示することさえできます。しかし何らかの理由で、選択した値は更新されません。コンテナ内のthis.props.selectedBoards
には正しい値がありますが、コンポーネントはこの更新を取得しません。
export default class MultiSelect extends React.Component {
constructor(props) {
super(props); // props.items = all options to select
this.state = {
selectedItems: props.value || [], // selected options (problem)
search: '',
hidden: true,
};
}
render() {
return (<div>
...
this.state.selectedItems
選択するためのオプションがprops
である(これは動作します)と、選択したオプションは、(更新されません)state
です。
MultiSelect
コンポーネントのアップデートに、状態にあるselectedItems
の新しい値を設定するにはどうすればよいですか?または、このようなコンポーネントを作成するための推奨方法は何ですか?
これは良い解決策ですが、あなたがしたい場合は、将来の変化を支える 'componentWillReceiveProps'メソッドに見て反応します。 –