react redux demo
创始人
2024-03-09 06:55:25
0

//constants.js

// 定义常量

export const ADD_COUNT = 'ADD_COUNT';

export const SUB_COUNT = 'SUB_COUNT';

export const APPEND = 'APPEND';

export const REMOVE = 'REMOVE';

//action.js

import {

ADD_COUNT,

SUB_COUNT,

APPEND,

REMOVE

} from './constants';

// 利用action来修改状态

export const addAction = (num)=>{

return {type:ADD_COUNT, num: num};

};

export const subAction = (num)=>{

return {type:SUB_COUNT, num: num};

};

export const append = ()=>{

return {type:APPEND};

};

export const remove = ()=>{

return {type:REMOVE};

//personReducer.js

import {APPEND,REMOVE} from './constants'

// 1.定义一个状态(数据)

let initialState = {

name: 'Tom'

}

// 利用reducer将store和action串联起来

function personReducer(state = initialState, action){

console.log(state,action)

switch(action.type){

case APPEND:

return { name: state.name +'sb1'};

case REMOVE:

return { name: state.name + 'sb2'};

default:

return state;

}

}

export default personReducer

//reducerNum.js

import {ADD_COUNT,SUB_COUNT} from './constants'

// 1.定义一个状态(数据)

let initialState = {

count: 0

}

// 利用reducer将store和action串联起来

function reducerNum(state = initialState, action){

console.log(state,action)

switch(action.type){

case ADD_COUNT:

return { count: state.count + action.num};

case SUB_COUNT:

return { count: state.count + action.num };

default:

return state;

}

}

export default reducerNum

//reducer.js

import {combineReducers } from 'redux'

import reducerNum from './reducerNum';

import personReducer from './personReducer'

const reducers = combineReducers({

reducerNum,

personReducer

});

export default reducers;


 

//store.js

import { createStore } from 'redux'

import reducers from './reducer'

// 利用store来保存状态(state)

const store = createStore(reducers);

export default store

//Rudexpage.js 使用redux

import React,{useEffect,useState} from 'react'

import store from '../redux/store'

import {addAction,subAction,append,remove} from '../redux/action'

export default function Rudexpage() {

const [count,setCount] =useState(store.getState().reducerNum.count)

const [name,setName] =useState(store.getState().personReducer.name)

useEffect(()=>{

store.subscribe(()=>{

setCount(store.getState().reducerNum.count)

setName(store.getState().personReducer.name)

})

})

const changeADD=(num)=>{

store.dispatch(addAction(5))

}

const changeremove=(num)=>{

store.dispatch(subAction(-5))

}

const changeAPPEND=()=>{

store.dispatch(append())

}

const changeREMOVE=()=>{

store.dispatch(remove())

}

return (

初始数据:{count}

修改后的数据{ store.getState().reducerNum.count}

初始数据:{name}


 

)

}

相关内容

热门资讯

华侨银行:下半年市场或继续向好... 转自:新华财经新华财经新加坡7月8日电(记者刘春涛)华侨银行投资策略常务董事华素梅农(Vasu Me...
【山西市场导报】小小电器巧解三... 小小电器巧解三伏“烤”验7月6日正午,太原被热浪紧紧裹住,太阳把迎泽大街的柏油路面晒得发软。家住老军...
湖北省政协原党组成员、副主席周... 转自:上观新闻湖北省政协原党组成员、副主席周先旺涉嫌严重违纪违法,目前正接受中央纪委国家监委纪律审查...
实现AI自主荐岗,朝阳区人社局... 转自:北京日报客户端日前,北京市朝阳区人力社保局创新推出的AI求职助手在抖音平台正式上线并投入使用。...
特别提醒!7月12日开考 转自:黑龙江发布黑龙江省2025年特岗教师招聘考试(文化课笔试)考前特别提醒  黑龙江省2025年特...
纯苯期货和期权在大商所挂牌上市 转自:新华财经新华财经北京7月8日电(记者 王小璐)2025年7月8日,纯苯期货和期权在大商所正式挂...
党建引领|海欣集团党委组织开展... 转自:海欣股份追寻红色足迹汲取前行力量主题党日活动在中国共产党成立104周年和陈云诞辰120周年之际...
澳大利亚商业状况和信心在央行决... 格隆汇7月8日|随着销售、盈利和就业大幅增长,澳大利亚的商业状况显著改善,企业信心也同步上升,显示出...
财务战线上的“红色算盘” 赵菊  财务工作常被称为“经济命脉的守护者”,中国航空工业集团安大综合管理室作为公司财务体系的“中枢...
雪祺电气在合肥成立供应链公司 转自:证券时报人民财讯7月8日电,企查查APP显示,近日,合肥雪祺供应链有限公司成立,法定代表人为顾...