1

私は以下のようないくつかのコンポーネントが含まれている私のアプリのためのエディタがあります。クロッパー別のコンポーネントの状態を更新するには?

  • ボタン
  • ページ

上記のすべてのコンポーネントがエディタページの子です。ですから、私はボタンコンポーネントからクロッパーズーム状態を更新する必要があります。この場合、reduxを使用しているため、状態がUIコンポーネントに直接使用されても問題ありません。しかし、私はボタンの状態を更新する必要があるときは苦労しています。ここで

は、私がボタンコンポーネント内から状態を変更する方法です:

this.setState({ 
      zoom: this.state.minZoom, 
      left: 0, 
      top: 0, 
     }); 

私はクロッパーコンポーネントからのコードの上に呼び出すことができますどのように?

+0

ようクロッパーコンポーネント内で呼び出すことができ、それを呼び出してデータをバックアップし、共有コンポーネントを複製せずに親コンポーネントに保存します。 React docsの[Lifting State Up](https://facebook.github.io/react/docs/lifting-state-up.html)の例を参照してください。 –

+0

@JoeClayだから、クロッパーコンポーネントから「ズーム」状態を取り除き、親レデューサーで「ズーム」状態にする必要がありますか? –

+1

複数のコンポーネントが 'zoom'(そして '同期している')を変更する必要がある場合、' Editor'コンポーネントの状態(コールバック小道具で変更)かReduxストア行動で)。 –

答えて

0

ジョーが正しいです。エディターの状態または還元店に保管してください。

エディタの状態で保存したい場合。あなただけのエディタ

<Cropper 
    onChange={(minZoom) => { 
    this.setState({ 
     zoom: minZoom, 
     left: 0, 
     top: 0, 
    }) 
    }} 
/> 
<Button zoom={this.state.zoom} /> 

からあなたクロッパーコンポーネントで小道具として呼び出しを渡すことができ

あなたがダウン小道具てコールバックを渡し、この

this.props.onChange(this.state.minZoom); 
関連する問題