私は、アクションをディスパッチする能力を持つグローバルユーティリティとしてReact/Redux関数を実装しようとしています。React/Redux:アクションをディスパッチできるグローバル関数ですか?
これは、ではなく、コンポーネント/コンテナです。他の人がインポートして呼び出すことのできるグローバル/静的関数です。
これは可能ですか?
ご提供いただけるアイデアやご提案をありがとうございます。
私は、アクションをディスパッチする能力を持つグローバルユーティリティとしてReact/Redux関数を実装しようとしています。React/Redux:アクションをディスパッチできるグローバル関数ですか?
これは、ではなく、コンポーネント/コンテナです。他の人がインポートして呼び出すことのできるグローバル/静的関数です。
これは可能ですか?
ご提供いただけるアイデアやご提案をありがとうございます。
dispatch
はStore
に由来しており、Store
のグローバル参照が必要です。
だからあなたのアプリケーションルートは次のようになりますと仮定します
export const store = createStore(root);
そして、あなたの静的utilのインポートから店舗:
const store = createStore(rootReducer);
ReactDOM.render(<Provider store={store} /> ...);
ちょうどstore
ことをエクスポート
import {store} from "../path/to/app/root";
store.dispatch({ ... });
これを行うより良い方法は、あなたのutil関数をdispatch
を引数として受け入れることです。この方法では、store
へのグローバル参照はありません。
ユーティリティメソッドがディスパッチする必要があることは奇妙に思えます...ディスパッチは、通常、非同期の "サンク"スタイルのアクションクリエータで呼び出されます - このページから約2/3を参照してください - http://redux.js.org/docs/advanced /AsyncActions.html。 本当に "静的な"ヘルパーは純粋で、アクションにディスパッチされる必要があるものを単に返すと思います。 – Bronson
私は同意します。これは実行可能ですが、おそらくアンチパターンです。 – Aaron
これは私が必要としていたものです!ある程度Redux/React初心者であったので、あなたはこの方法で店を輸出することができるとは思わなかった。 ありがとう! – djbuttery
私は古い学校です。 app.jsで私はどうなる:それだ
window.store = store
- ストアグローバル暴露などをインポートする必要これは、サーバー側のレンダリングを破るしませんが、あなたはどのような場合にはグローバルなディスパッチを使用している場合、それは壊れます。このTwitterのスレッドを参照してください:https://twitter.com/Grynn/status/955485816389685248
はダン・アブラモフ(上記のスレッドで)からの回答を引用:
は大きな製品に実際に起こる ページ(のいくつかのようにアプリが存在する場合、テストは難しく、壊れ作り)、サーバ のレンダリングが不可能になります。それ以外の場合は、それは大丈夫です
はい可能です。 – Brandon
あなたは正確に何をしようとしているのかの例を挙げることができますか?通常、どのような種類のグローバル参照も使用しないようにします。このためReduxは引数としてコンポーネントへのディスパッチを提供します。 – Aaron
アイデアは、どのポイントからでも呼び出せるアプリケーションレベルのエラーモーダルを持つことです。 表示されるエラーメッセージのみを受信し、エラーモーダルを開くアクションを(呼び出し元を代わって)ディスパッチするユーティリティメソッドが必要になります。 – djbuttery