は、グローバルアプリケーション状態(試薬) - 原子がある考えてみましょう:試薬:ワーカーを使用してローカルコンポーネントの状態をグローバル状態に同期させますか?
(defonce state (reagent/atom ["Here" "are" "some" "words"]))
この原子取得の操作/ Webアプリケーションを通じてさまざまな場所からスワップ。
今では、単語をstate
からレンダリングする必要があるコンテナがあります。コンテナ自体は、それ自身のローカル状態でいくつかの余分なデータを追跡する必要があります。言葉の長さが必要だとしましょう。
ように、ローカル状態は、このような構造を有する、グローバル状態に同期している原子が存在すべきである:例えば、レンダリングされる
[{:word "Here" :length 4}
{:word "are" :length 3}
{:word "some" :length 4}
{:word "words" :length 5}]
ように:
(defn compo []
(let [local-state ...]
(fn []
[:div
(for [{:keys [word length] @local-state]
[:div (str word " - " length)])])))
これを行う方法?これはウォッチャーのためのシナリオでしょうか?(installed via add-watch
はlet文の冒頭にありますか?
これは正しいアイデアだと思いますが、あなたの例ではグローバル状態を使用しません...グローバル状態とローカル状態の両方を使用することを意味します。 –
新しい原子を作成するのではなく、レンダリングされる前に、必要に応じてグローバル状態の一部を変換する '' 'let'''式を使用するだけです。私はそれが十分明確であることを望む。私の例の '' 'local-state''はもはや原子ではなく、表現の不変の結果です。 –
清算のためのgotchaありがとう –