Redux基礎③

 
[プロジェクト名]/src/components/App.js
import '../App.css';
import store from '../index';

function App() {
  return (

    <div>
      <p>MyReact</p>
      <p>{store.getState().text}</p>
    </div>

  );
}

export default App;
[プロジェクト名]/src/reducers/text.js
const initialState = {
    text: "Python"
}

export function texts(state = initialState){
    return state;
}
[プロジェクト名]/src/index.js
import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './components/App';
import {createStore} from 'redux';
import {Provider} from 'react-redux';
import {texts as reducer} from './reducers/text';

const store = createStore(reducer);
export default store;

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  //<React.StrictMode>
  <Provider store={store}>
    <App />
  </Provider>
  //</React.StrictMode>
);
 
 
解説ですが、

Reducerであるtext.jsを作成しました。

index.jsでは、reducerとしてimportしてます。

storeフォルダ作成はあまり一般的でないため、そうはせず、代わりに、

index.jsで作成したstoreをexportして、ほかのファイルでも使用できるようにしてます。




毎回、store.getState().text

を使用してもよいのですが、これを改善するために、

mapStateToPropsメソッドという名は体をあらわすメソッドを使用します。

これをどこで使用するかという問題があります。

ReactにReduxを導入する際に、表示+最低限の機能のApp.jsに加え、Reduxと結合するためのContainer Componentを作成するのが通例です。
次のRedux基礎④はそのようにしてますが、それ以降は作成していてややこしくなることに気づいたので、わかりやすいようにするために、分けずに、すべての機能と表示をApp.jsに持たせて書いてます。
 
参考HP:

日本一わかりやすいReact-Redux入門#10...Storeと接続されたコンテナーコンポーネントを作ろう - YouTube

 

それでは次回mapStateToPropsメソッドを使用していきます。