私はログインしたユーザーに関する情報を提供するヘルパークラスを持っています。私は静的メソッドとしてそれを持っていて、いくつかの場所(それは反応しないコンポーネントです)で使用したいと思います。グローバルにリデュース状態の値
クラスモデルでreduxストア値にアクセスするにはどうすればいいですか?
は私はログインしたユーザーに関する情報を提供するヘルパークラスを持っています。私は静的メソッドとしてそれを持っていて、いくつかの場所(それは反応しないコンポーネントです)で使用したいと思います。グローバルにリデュース状態の値
クラスモデルでreduxストア値にアクセスするにはどうすればいいですか?
は一つの方法は、アクセスするグローバル変数
window.store = createStore(...)
と、それを使用し、設定することができwindow.store
、あなたのアプリケーションでこれを管理することができる場合には、合格するクリーナー(およびよりテスト可能)になりますグローバル変数、スタティックまたはシングルトンを使用するのではなく、依存性注入(DI)を使用しています。あなたはこのようなコンストラクタで、それを渡すことができ、簡単な形式では:
var store = createStore(...);
var app = new AppClass(store);
あなたはWebPACKのようなバンドラを使用していない場合は、ルーカス・片山の答えはwindow.store = createStore(...)
を動作するはずですが、あなたはいずれかを使用している場合、あなたはまた、公開することができますそれを輸出し、必要な場所に輸入することによってあなたのレキシックスストア
//store.js
export const store = createStore(...);
//other file
import { store } from './store.js';
const someFuncOrClass = (...) => {
const user = store.getState().userInfo;
}
まっすぐ前方実装のようです。 creatStore(...)
と同じファイルにストア用のゲッターを作成することができます。
store.js
import { createStore } from 'redux';
let store = {};
export default function store(...) {
/*
* things to do before creating store
*/
store = createStore(...);
return store;
}
export function getStore() {
return store;
}
helper.js
import { getStore } from './store';
export function getUserInfo() {
const store = getStore();
const globalState = store.getState();
return globalState.userInfo;
}