React Context を react-konva で使用する

共有状態とは、左側のメニューの変更によって、ユーザー ジャーニー マップの画面コンポーネントのレンダリングに使用されるデータを更新できることを意味します。

reciprocal.devreact-konvaの一部として使用してユーザー ジャーニー マップを作成し、そのマップにズームとパンを追加するという私の投稿に続いて、キャンバスにレンダリングされたコンポーネントのプロパティをキャンバスの外側から変更するための拡張機能を追加することにしました。

この拡張機能を実装するには、アプリ全体の状態を導入する必要がありました。これにより、キャンバス以外の UI でのやり取りを追跡し、キャンバス コンポーネントの値を更新できるようになります。

useContextこれを行うために、アプリの状態を変更するためにコンテキストが公開するプロパティにアクセスする必要があるコンポーネントのフックを使用して、アクセスできるコンテキストを構築することから始めました。

子コンポーネントがコンテキストにアクセスできるように、ルート コンポーネント レベルでコンテキスト プロバイダーを追加しました。これは、画面情報を表示するために作成した UI 要素ではうまく機能しましたが、キャンバス内のコンポーネントでは機能しませんでした。

キャンバス要素のレンダリングに使用される の子であったコンポーネントは、Stageスコープの問題により、これらのプロパティにアクセスできませんでした。

react-konva ステージ内で React コンテキストにアクセスする

スコーピングの問題を回避するための修正は比較的簡単ですStage。

新しいプロバイダーが元のプロバイダーの値を再利用するには、コンシューマーをラップしStageて、コンテキスト プロバイダー コンポーネントが prop によって設定された値を持つことができるようにする必要があります。

プロバイダーを内部に配置したら、キャンバスにレンダリングされるコンポーネント内でフックをStage使用できます。useContext

最終的な構造は次のようになります。

React Context を使用して状態変化時に UI 要素を更新する

キャンバス内からコンテキストにアクセスできるので、このコンテキストを使用して、キャンバス外の UI 要素とキャンバス内の UI 要素の間の共有状態を更新できます。

まず、非キャンバス UI を介して更新される値を取得および設定する手段が必要です。これを行うために、呼び出された値と、この値の getter および setter を、その値 prop を介してプロバイダーuseStateに追跡するために使用します。colour

setColourこの色の値は、ユーザーが color select 要素から値を選択するたびに、呼び出す非キャンバス UI 内で変更されます。

キャンバス コンポーネント内ではcolour、コンテキストから値を取得し、それを使用してコンポーネントで使用される色を設定します。

キャンバス コンポーネントによって読み取られ、非キャンバス コンポーネントによって設定される色の値を取得したらRect、選択ボックスを使用して色を設定できます。

概要

この投稿は非常に単純なユースケースをカバーしていますが、React Context を使用して多数の値の状態を追跡し、ユーザーがキャンバス外からキャンバス内のオブジェクトを更新できるようにする高度な UI を構築できない理由はありません。

reciprocal.devの一部として作成したUser Journey Mapの例で、共有状態のデモを見つけることができます。これは、この記事で説明したアプローチを使用して、非キャンバス UI とメイン キャンバスの間のアプリの状態を追跡するためです。 .

提案された投稿

ドメイン名に関する情報の検索

Brian P. Hogan 著『Small, Sharp Software Tools』からの抜粋

ドメイン名に関する情報の検索

facebook.com にリクエストを送信すると、コンピュータはドメイン名を検索してそのドメイン名を IP アドレスに変換し、コンピュータが接続できるようにします。

脳卒中の壊滅的な結果を避ける: 家族の旅から学ぶ 。

脳卒中の壊滅的な結果を避ける: 家族の旅から学ぶ 。

はじめに 脳卒中は、いつでも誰でも起こり得る医療上の緊急事態です。これは、脳の一部への血流が中断され、脳機能が突然失われることで発生します。

関連記事

電話番号だけで誰でも追跡 | OSINT調査

電話番号だけで誰でも追跡 | OSINT調査

あなたは、OSINT 調査員、CTF プレーヤー、または単にスパム電話を受けている人である可能性があります。広告で見た番号を確認しようとしている人。

デザインに 2 年 - 良い点、悪い点、そして醜い点…

デザインに 2 年 - 良い点、悪い点、そして醜い点…

「Hey Siri、オリビア・ディーンの『ミー・ダイブ』をかけて」私がナイジェリアのアクレにあるフューチャー アカデミー アフリカでインターンシップを始めたのは、2021 年 5 月のことでした。

地球を救ってお金を稼ぐ方法

地球を救ってお金を稼ぐ方法

ペットボトル、ガラス瓶、アルミ缶、グリーンエネルギーパッケージなどを、何回考えずに捨てたことがあるでしょうか? リサイクルする代わりに何かが得られたらいいのにと何度思ったことか。あなたがほとんどの人と同じなら、おそらく答えは何度もあるはずです。リサイクルは、多くの場合、即時的または具体的な利益をもたらさない面倒な作業、面倒な作業、または義務であると考えられています。

メディアを再考する: マクチェズニーの 5 つの真実とコミュニケーションの未来

今日の非常につながりの深い世界では、メディア システムは世論の形成、ひいては民主的な意思決定において極めて重要な役割を果たしています。学者のロバート・マクチェズニーは、コミュニケーションの政治経済についての深い分析の中で、従来の通念に疑問を呈し、メディアに関する彼の言うところの「5つの真実」を提示します。