特定の要素のみを更新するために、setStateのパラメータで特定のキーを渡すことができるチュートリアルを読んだ。しかしここに私の場合です:ReactJSで特定のキーにsetState
私はtomchentwの反応 - google - マップコンポーネントを使用します。私はAppの状態でマップのオプションを設定します(そして、それを小道具を介してGoogleMapコンポーネントに渡します)。
app.jsx
constructor() {
super();
//Initial value
this.state = {
optionsMap:{
center: {
lat: 46.8261444,
lng: 2.2418121
},
zoom: 5
},
variables: {}
}
}
map.jsx
render() {
return (
<GoogleMapLoader
containerElement={ <div {...this.props} style={{ height: '500px'}}></div> }
googleMapElement={
<GoogleMap
ref="googleMap"
{...this.props.optionsMap} //biding map options with spread
onIdle={this._handleIdle.bind(this)}>
</GoogleMap>
}
/>
);
}
_handleIdle(event) {
this.props.updateVarsOptions(this.props.optionsMap);
}
私はapp.jsxで定義する(私はマップをmoove)()関数の私updateVarOptionsを呼び出して、私は非常に特定のキーの変数の状態を更新してください。
app.jsx
_updateVarsOptions(mapOptions) {
this.setState({
variables : mapOptions
});
}
だから、私は状態にのみ変数キーを更新し、私はSETSTATEを行うときに、マップがデフォルト値を持つresettings(中心位置とズームです)。状態がoptionsMapキーをに更新しています。なぜか分からない。
*「状態はoptionsMapキーを「*」に更新しています。これはマップの動作に基づいた前提ですか?または、実際に 'this.props.optionsMap'の値をログに記録しましたか?値が同じであることは間違いないので、これは 'GoogleMap'コンポーネント自体のバグを示す可能性があります。 –
それは私の前提です。 state.optionsMapはタッチではありません。しかし、マップはstate.optionsMap値でリセットされるため、DOMは更新中です。 ( – Gaius
)setState()の変数キーのみを更新している間にGoogleマップのDOMが更新されるのはなぜですか? – Gaius