私のページには3つのグラフコンポーネントがあります。彼らは線グラフを描きます、10回の測定をしましょう。各グラフはスクロールホイールでズームイン/ズームアウトできます。グラフコンポーネントはイベント関数のプロパティーonZoom
を公開しています。そのため、たとえばハンドラをconsole.log
とバインドすると、ズームが発生したときにコンソールに出力が表示されますが、問題はありません。コンソールで出力される値は、xが何グラフから表示されるべきかを表すの値の配列を表します(ドメイン)。3つのグラフ間でズームレベルを同期します
他の2つのグラフに同じズームレベルを設定したいとします。これを行うには、ref
プロパティを使ってグラフコンポーネントを作成し、後で.zoom()
をドメインに渡す必要があります。その結果、新しいズームを設定するには、this.refs.myChart.zoom(domain)
のような名前を呼び出す必要があります。
私はredux
を使用しています。ズームを変更すると「ズーム」イベントが表示され、ストアが変更され、そのストア値は3つのグラフのそれぞれzoomDomain
にバインドされています新しいズームレベル(ドメイン)をプロパティとして正しく設定しました。
他のグラフのズームレベルを更新/設定するには、refs.myChart.zoom(this.props.zoomDomain)
に電話をかける方法と場所を理解できません。
私がrender()
に行った場合、render()
に何もしてはならないというエラーが表示されますので、どうすればいいですか?
P.S.私がグラフに使用するライブラリはreact-c3js
完全ではない。新しいズームレベルは、ベースコンポーネントのスライダからではなく、チャートの1つから取得されます。しかし、私は考えを持って、私はそれを試してみましょう。 – kaytrance
BTWの 'componentWillReceiveProps'は状態更新時にトリガされないので不要です。コード例を変更しました。したがって、ズームの変更がどこから発生するのか( またはのコンポーネント)、 'onChange'プロップで処理でき、ハンドラメソッドではすべてのチャートを(refを介して)更新できます。 ところで別のアプローチもあります。 'react-c3js'コンポーネントには' zoom'プロパティがあります。したがって、ズームの変更(上記の例のように)+ の処理で十分です。 サポートが必要な場合はお気軽にお問い合わせください。 –
問題は、チャートがプロパティとしてズームをサポートしていないことであり、すべての苦痛はそれによるものです。ズームプロパティはコールバックを定義できますが、残念なことにズームドメインを渡すことはできません。ズームを変更する唯一の方法は、メソッド '.zoom(domain)'を呼び出すことです。 – kaytrance