账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    react-redux中多个action和reducer是如何关联的
    43
    0

    如题,存在多个action和多个reducer,使用combineReducers()合并多个reducer后,怎么知道store派发的action是由哪个reducer处理,根据什么进行判定的?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • VIP、首席╮ 普通会员 1楼

      在React-Redux中,多个action和reducer通常会以组件树的形式关联起来,组件树的根节点是action,每个子节点是一个reducer。

      以下是具体操作步骤:

      1. 定义action:首先,我们需要在store.js文件中定义我们的action。每个action都代表了一个操作,比如增加商品数量、删除商品、更改商品价格等。这些action会触发store的reducer。

      ```javascript import { createStore } from 'redux'; import reducer from './reducer'; import addProduct from './actions/productActions';

      const store = createStore(reducer);

      export default store; ```

      1. 定义reducer:在reducer.js文件中,我们需要定义我们的reducer。reducer负责处理store中的action,并根据不同的action执行不同的操作。

      ```javascript const productState = { products: [], totalPrice: 0 };

      const productReducer = (state = productState, action) => { switch (action.type) { case 'ADDPRODUCT': return { ...state, products: [...state.products, action.payload], totalPrice: state.totalPrice + action.payload.price }; case 'DELET商品': return { ...state, products: state.products.filter(product => product.id !== action.payload.id) }; case 'CHANGEPRODUCTPRICE': return { ...state, products: state.products.map(product => product.price = action.payload.price) }; default: return state; } };

      export default productReducer; ```

      1. 创建reducer的父组件:我们需要在我们的组件树中创建一个父组件,该父组件负责调用我们的reducer,并将reducer的结果作为组件的state。这样,每当组件的状态改变时,reducer都会被调用。

      ```javascript import React from 'react'; import { useSelector, useDispatch } from 'react-redux'; import productReducer from './reducer';

      const ProductList = () => { const products = useSelector((state) => state.products); const dispatch = useDispatch();

      const handleAddProduct = (product) => { dispatch(addProduct(product)); };

      const handleDeleteProduct = (id) => { dispatch(deletProduct(id)); };

      const handleChangeProductPrice = (price) => { dispatch(changeProductPrice(price)); };

      return (

      产品列表

      {products.map((product) => (

      {product.name}

      价格:${product.price}

      ))}
      ); };

      export default ProductList; ```

      通过以上步骤,我们就可以在React-Redux中实现多个action和reducer的关联。

    • 无极清风 普通会员 2楼

      在React-Redux中,多个action和reducer通常会以组件树的形式关联起来,组件树的根节点是action,每个子节点是一个reducer。

      以下是具体操作步骤:

      1. 定义action:首先,我们需要在store.js文件中定义我们的action。每个action都代表了一个操作,比如增加商品数量、删除商品、更改商品价格等。这些action会触发store的reducer。

      ```javascript import { createStore } from 'redux'; import reducer from './reducer'; import addProduct from './actions/productActions';

      const store = createStore(reducer);

      export default store; ```

      1. 定义reducer:在reducer.js文件中,我们需要定义我们的reducer。reducer负责处理store中的action,并根据不同的action执行不同的操作。

      ```javascript const productState = { products: [], totalPrice: 0 };

      const productReducer = (state = productState, action) => { switch (action.type) { case 'ADDPRODUCT': return { ...state, products: [...state.products, action.payload], totalPrice: state.totalPrice + action.payload.price }; case 'DELET商品': return { ...state, products: state.products.filter(product => product.id !== action.payload.id) }; case 'CHANGEPRODUCTPRICE': return { ...state, products: state.products.map(product => product.price = action.payload.price) }; default: return state; } };

      export default productReducer; ```

      1. 创建reducer的父组件:我们需要在我们的组件树中创建一个父组件,该父组件负责调用我们的reducer,并将reducer的结果作为组件的state。这样,每当组件的状态改变时,reducer都会被调用。

      ```javascript import React from 'react'; import { useSelector, useDispatch } from 'react-redux'; import productReducer from './reducer';

      const ProductList = () => { const products = useSelector((state) => state.products); const dispatch = useDispatch();

      const handleAddProduct = (product) => { dispatch(addProduct(product)); };

      const handleDeleteProduct = (id) => { dispatch(deletProduct(id)); };

      const handleChangeProductPrice = (price) => { dispatch(changeProductPrice(price)); };

      return (

      产品列表

      {products.map((product) => (

      {product.name}

      价格:${product.price}

      ))}
      ); };

      export default ProductList; ```

      通过以上步骤,我们就可以在React-Redux中实现多个action和reducer的关联。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部