Redux

4126 ワード

n/a.理由

  • コンポーネント間のprops伝送を回避するために使用される.
  • の複雑な支柱がなく、すべてのコンポーネントがstateに直接インポートできます.
  • 状態データ管理が便利です.
  • 設定

    npm install redux react-redux
  • 分書き、react-redux
  • を2つ設定

    設定

    // index.js
    import { Provider } from "react-redux";
    import { createStore } from "redux";
    
    let store = createStore(() => {
      return [{ id: 0, name: "GG", quantity: 2 }];
    });
    
    ReactDOM.render(
      <React.StrictMode>
        <BrowserRouter>
          <Provider store={store}>
            <App />
          </Provider>
        </BrowserRouter>
      </React.StrictMode>,
      document.getElementById("root")
    );
  • import {Provider}
  • <プロバイダ>パッケージ<アプリケーション>
  • を使用
    ステータスは
  • createStore()に
  • 格納されます.
    propsは
  • <プロバイダ>
  • に送信される.

    使用

    // redux store 데이터를 가져와서 props로 변환해주는 함수
    function state를props로(state) {
      return {
      	state: state;
      };
    }
    
    export default connect(state를props로)(Cart);
  • storeのstateに作成機能を使用します.
  • ステータスをpropsに変換します.
  • export default connect()()
  • ステータスデータの変更

    // index.js
    let 기본state = [{id : 0, name : 'GG', quan : 2}];
    
    function reducer(state = 기본state, 액션){
      if (액션.type === '수량증가') {    
        let copy = [...state];
        copy[0].quan++;
        return copy
    
      } else {
        return state
      }
      
    }
    // let store = createStore(reducer);
    let store = createStore(combineReducers({reducer, reducer2}));
    
    
    // Cart.js
    <button onClick={()=>{ props.dispatch({type: '수량증가'}) }}> + </button>
    
    function state를props화(state) {
      return {
        states : state.reducer // reducer를 2개 이상 쓰면 구분해줘야 한다.
      }
    }
    ステータスの初期値を
  • 変数で作成し、reduceのパラメータとします.
  • 修正方法を定義します.
  • reduceが長くなった場合は、他のjsファイルにエクスポート/インポートして使用します.
  • の他のタイプのstateを保存するには、reduceをもう1つ作成します.
  • の大規模なWebサイトはステータスが多く、コンポーネントを見つけるのが難しく、redoxを使用するには修正された関数や割り当てを見つけるだけでいいです.
  • createStore(combineReducers({reducer1, reducer2}));

  • Reduxのindex.jsにすべてのデータを保存することはできません.複数のコンポーネントで使用されるコンテンツを格納できます.
  • payload

    props.dispatch({type : '항목추가', payload : {id : 2, name : '새로운상품', quan : 1} })
  • Redux Storeにデータを記述します.
  • // index.js
    
    let 기본state = [{id : 0, name : '멋진신발', quan : 2}];
    
    function reducer(state = 기본state, 액션){
    
      if (액션.type === '항목추가') {
        let copy = [...state];
        copy.push(액션.payload);
        return copy;
      }
    }
  • 動作パラメータは、スケジューリングスキームのすべての内容を含む.
  • history.push();

    history.push('/cart'); 
  • ルータを使用して移動してもステータスはリセットされません.