22

バックグラウンド

私は React Native と Redux を使用してアプリケーションを構築し、Swift を介した今後のプロジェクトでそれを使用して完全にネイティブにするかどうかを評価しています。

Redux を使用した Dan Abramov の手法は、堅実なエンジニアリングの例であると心から信じています。状態を更新せず、状態の関数としてビューを持つことは素晴らしいことであり、私はそのアイデアに非常に賛成しています。私がいくぶん行き詰まっているのは、アニメーションをミックスに投入することです。

シナリオ

より複雑なアニメーションには、ビューのフェードアウト、テキストの置き換え、フェードインなどの状態管理が必要です。アニメーションの途中でのみテキストを更新したいのですが、これはローカル状態を使用して簡単に行うことができます。アニメーション フレームワーク。

表示されるテキストが状態によって駆動されるとします。状態が適切なアクションとリデューサーの組み合わせによって変更された瞬間に更新されますが、プレゼンテーションのために、これら 2 つのアニメーションの間に必要です。

この例は、選択したレコードの名前を示す画面上のラベルがあるリストからレコードを選択することです。理想的には、グローバル ストアをすぐに更新する必要がありますが、ラベル自体は適切に移行します。

私の考え

私の考えでは、コンポーネント内で「ローカル状態」を使用してアニメーションを処理し、メインの Redux ストアをより全体的なデータまたはアーキテクチャの状態に使用することは、ある程度理にかなっています。問題は、これがビューがグローバルな状態の関数であるという考えを壊していることであり、それが私に合っているかどうかはわかりません。

一方で、たくさんのアクションやリデューサーを書いてストアを散らかしてアニメーション シーケンスなどを管理することも、きれいに感じられません。

質問

React Native はまだ初期段階にあり、誰もが Redux を使用しているわけではありませんが、この種のシナリオでアニメーションを管理する一般的に受け入れられている方法はありますか?

4

1 に答える 1

16

私は React を開発してわずか 9 か月しか経っていないので、Matt のような人たちと比べるとおそらく無知であり、redux は素晴らしいとはあまりためらうことなく言えますが、内部コンポーネントの状態を置き換えるべきではありません。すべての状況。特にアニメーションなどの場合。ご自身で質問されましたが、もう一度お尋ねします。なぜこれをグローバルな状態にする必要があるのでしょうか? Redux は、アプリケーション全体で何かが発生したときに、アプリケーション全体のコンポーネントが更新された状態を取得できるようにするために存在します。ただし、これは、Redux ストアを除いて、アプリケーションのどこにも状態があってはならないという意味ではありません。

私よりずっと賢い男が言った

「Redux のやり方」で物事を行うことにプレッシャーを感じている場合、それはあなたまたはあなたのチームメイトが真剣に考えすぎている兆候かもしれません。これはツールボックスにあるツールの 1 つにすぎず、実験が大暴れしました。地元の状態は大丈夫です....

Redux が提供するトレードオフは、「何が起こったか」を「どのように変化したか」から切り離すために間接性を追加することです。それは常に良いことですか?いいえ、トレードオフです。

私が引用しているこれは何ですか?Redux はすべての React に使用されるべきではないと言うことができるのは、どのような冒涜的な React 開発者でしょうか??

私はあなたに誰を教えます。Redux の作成者

https://medium.com/@dan_abramov/you-might-not-need-redux-be46360cf367#.flb8fzjr8

TLDR Redux は、便利で理にかなった場所で使用してください。それがすることになっているのは素晴らしいことです。ただし、その丸いペグを四角い穴にはめようとしないでください。

これが役に立つことを願っています。

于 2017-02-20T23:22:36.697 に答える