react 事始め 10
◾️store
アプリケーションで扱う状態の変更を担うreducerを元にstoreを作成する。そのstoreがアプリケーション内のすべてのcomponentで使用できるようにするための仕込みを行う。
reduxパッケージから提供されているstoreを作成するための関数であるcreateStoreをインポートする。作成したstoreを全てのcomponentに渡すための機能をもつ、react-reduxが提供している特殊なcomponentのProviderをインポートする。reducerをインポートし、ソースコードの見通しを良くする意味でもcomponentの専用のディレクトリを作成し、App.jsを移動する。
src/index.js import { createStore } from 'redux' import { Provider } from 'react-redux' import reducer from './reducers' import App from './components/App';
storeを作成し、createStoreの引数にreducerを渡す。 ここで作るstoreは、アプリケーション内部で唯一のものになる。アプリケーション内部のstateはこのstoreに集約される。
const store = createStore(reducer)
ここで作成したstoreが、アプリケーション内のどのcomponentから参照できるようにするために利用するのがProvider
。既存のcomponentをProviderでラップしてstoreという属性にstoreを渡す。アプリケーション内部の全階層のcomponentでstoreの利用が可能になる。
ReactDOM.render( <Provider store={store}> <App /> </Provider>, document.getElementById('root') );
ここまでの実装
import React from 'react'; import ReactDOM from 'react-dom'; import { createStore } from 'redux' import { Provider } from 'react-redux' import './index.css'; import reducer from './reducers' import App from './components/App'; import * as serviceWorker from './serviceWorker'; const store = createStore(reducer) ReactDOM.render( <Provider store={store}> <App /> </Provider>, document.getElementById('root') ); serviceWorker.unregister();