简单封装一下redux

背景

每次添加一个新的redcuer时,需要手动添加到combineReducers,非常麻烦,又没有一种方法可以自动导入呢?

Vite的import.meta.glob

具体用法参考import.meta.glob

目录结构

在这里插入图片描述

文件内容

global和home基本一致

index.js

import { backObj } from "@/utils/index";
import { homeState } from "./state"
export const UPDATA_STORE = Symbol("STORE_UPDATA")
export default (state = homeState, action) => {
  switch (action.type) {
    case UPDATA_STORE: {
      const payload = backObj(action.payload);
      return { ...state, ...payload };
    }
    default:
      return state
  }
}

export { action as homeAction } from "./action"

action.js

import { UPDATA_STORE } from "./index"
export const action = {
  updateStore: (payload) => dispatch => {
    dispatch({
      type: UPDATA_STORE,
      payload
    })
  }
}

state.js

import { menuData } from "@/config/sideMenu"
export const homeState = {
  sideMenu: menuData
}

store下的index.js

import { createStore, combineReducers, applyMiddleware } from "redux"
import { thunk } from 'redux-thunk'

const reducerModules = import.meta.glob('./**/index.js', { eager: true })

const reducers = {}
for (const key in reducerModules) {
  const name = key.split('/')[1]
  reducers[name] = reducerModules[key].default
}

export default createStore(combineReducers(reducers), applyMiddleware(thunk))
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值