redux-拆分state

2021-01-29  本文已影响0人  skoll

一个最小的redux实例

const set_clientUrl="set_clientUrl"
const set_clientReload="set_clientReload"

const initState={
    clientUrl:"http://192.168.40.199:8998/",
    isReload:0,
}
// initState为什么会变?

function reducer(state=initState,action){
    switch(action.type){
        case set_clientUrl:{
            return Object.assign(state,{"clientUrl":action.payload.clientUrl})
        }
        case set_clientReload:{
            // 原数据和新数据的merge操作怎么才是优美的操作呢
            return Object.assign(state,{"isReload":state.isReload+=1})
        }
        default:
            return state
    }
}

function otherReducer(state=initState,action){
    switch(action.type){
        case set_clientUrl:{
            return Object.assign(state,{"clientUrl":action.payload.clientUrl})
        }
        case set_clientReload:{
            // 原数据和新数据的merge操作怎么才是优美的操作呢
            return Object.assign(state,{"isReload":state.isReload+=1})
        }
        default:
            return state
    }
}

合并到成一个新的state

import {combineReducers} from 'redux'
const AllReducer=combineReducers({reducer,otherReducer})
export {AllReducer}

使用

1 .index.js里面
import {createStore}from 'redux'
import {AllReducer} from './redux/reducer'

2 .单独的文件使用
const clientUrl=useSelector(state=>state.reducer.clientUrl)

3 .提交:这里好像有点问题
提交之后上面的reducer要改下
function reducer(state=initState,action){
    console.log(action.payload)
    switch(action.type){
        case set_clientUrl:{
            return Object.assign(state,{"clientUrl":action.payload.value})
//这里要变成是value
        }
        case set_clientReload:{
            // 原数据和新数据的merge操作怎么才是优美的操作呢
            return Object.assign(state,{"isReload":state.isReload+=1})
        }
        default:
            return state
    }
}
上一篇下一篇

猜你喜欢

热点阅读