react的各种文件

react文件夹分类

actions

import { post, get } from '@/utils/request'
import { DOLOGIN } from '@/constants/actionTypes'

export const dologin = () => {
  return {
    type: DOLOGIN,
    payload: '',
  }
}

constants

// login 的 type
export const DOLOGIN = 'DOLOGIN'

// home 的 type
export const HOME_DATA = 'HOME_DATA'

reducer

//login.js
import { DOLOGIN } from '@/constants/actionTypes'

const initState = {
  token: '',
}

export default function (state = initState, action) {
  switch (action.type) {
    case DOLOGIN:
      return { ...state, token: action.payload }
  
    default:
      return state
  }
}

//home.js
import { HOME_DATA } from '@/constants/actionTypes'

const initState = {
  data: '',
}

export default function (state = initState, action) {
  switch (action.type) {
    case HOME_DATA:
      return { ...state, token: action.payload }
  
    default:
      return state
  }
}

store.js

import { createStore, applyMiddleware, compose, combineReducers } from 'redux'
import promise from 'redux-promise'
import thunk from 'redux-thunk'
import { persistReducer } from 'redux-persist'
import storage from 'redux-persist/lib/storage'
import autoMergeLevel2 from 'redux-persist/lib/stateReconciler/autoMergeLevel2'
import home from '@/reducer/home'
import login from '@/reducer/login'

// 我要对哪些state做数据持久化
const rootPersistConfig = {
  key: 'root',
  storage: storage,
  stateReconciler: autoMergeLevel2,
}

// 单独为 某个 reduce 做数据持久化
const myPersistReducer = combineReducers({
  home,
  // persistReducer 做数据持久化
  login: persistReducer(
    rootPersistConfig,
    login
  ),
})

const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose

const store = createStore(
  myPersistReducer,
  composeEnhancers(applyMiddleware(promise, thunk))
)

export { store }

index.js

//引入插件
import { Provider } from 'react-redux'
import { persistStore } from 'redux-persist'
import { PersistGate } from 'redux-persist/lib/integration/react'
import { store } from '@/store'

<Provider store={store}>
    <PersistGate loading={null} persistor={persistStore(store)}>
    </PersistGate>
  </Provider>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。