Taro+React-redux使用仓库存储数据和修改仓库中的值

178 阅读1分钟

1. 创建仓库

constant

    // 用于定义action对象中type类型的常量值
    export const SAVE_BENEFITS_SHOP_INFO = 'SAVE_BENEFITS_SHOP_INFO'

actions

    import { SAVE_BENEFITS_SHOP_INFO } from '../constants/common'
     /**
     * 保存更新数据信息
     * @param {Object} shopInfo 门店信息
     */
    export const updateBenefitsShopInfo = (benefitsShopInfo) => {
      return {
        type: SAVE_BENEFITS_SHOP_INFO,
        benefitsShopInfo
      }
    }

reducers

        import { SAVE_BENEFITS_SHOP_INFO } from '../constants/common'
        const Inital_state = { benefitsShopInfo: {} }
        export default function common (state = Inital_state, action) {
          switch(action.type) {
            case SAVE_BENEFITS_SHOP_INFO:
              return {
                ...state,
                benefitsShopInfo: action.benefitsShopInfo
             }
        	default:
        	  return state	
          }
        }

2. 页面使用

1. 类组建使用

    import { updateBenefitsShopInfo } from '@/store/actions/common'
    import { connect } from '@tarojs/redux'

    @connect(({ common }) => ({
      benefitsShopInfo: common.benefitsShopInfo
    }), (dispatch) => ({
      onUpdateBenefitsShopInfo(benefitsShopInfo) {
        dispatch(updateBenefitsShopInfo(benefitsShopInfo))
      }
    }))

    // 更新值
    this.props.onUpdateBenefitsShopInfo(item)
    // 取值
    this.props.benefitsShopInfo

2.函数组件使用

    import { useSelector, useDispatch } from '@tarojs/redux'
    import { init_goodsMessage } from '@/common
      // 仓库数据
      const { goodsMessage } = useSelector(
        (state) =>
          state.auditPriceCheck || {
            goodsMessage: deepCopy(init_goodsMessage),
          }
      )
      const dispatch = useDispatch()

      dispatch(
          upDataGoodsMessage({
            tabList: newTabList,
            productList: newProductList,
          })
    )
    // 取值
    直接使用goodsMessage