react之redux详解及例子展示(简单)

(0)初始准备

npm install --save redux
npm install --save react-redux
npm install --save-dev redux-devtools

(1)redux各个参数的相关介绍

1.state: 存储数据的仓库
2.action: 改变state中数据的方法
3.reducer: 就是将state和action联系起来,从而改变state的数据
4.combineReducers: 如果你的reducer是多个的,combineReducers 可以把他们合并在一起

(2)store的相关方法

1.getState():获取state中的数据
2.subscribe():当通过reducer改变state中的数据时,可以做到监听,为了重新渲染view层
3.dispatch():触发reducer

(3)例子:改变login组件的相关数据
a.在src文件夹下新增store文件夹
b.在store文件夹下新增login文件夹,index.js文件,reducer.js文件
c.在login文件夹下新增state.js,action.js,reducer.js文件
在这里插入图片描述
d.store/login/state.js

export default {
    logoName: '中科软科技',
    gwurl: 'http://www.sinosoft.com.cn/'
}

e.store/login/action.js

export const getLogoNameAction = (value) => ({
    type: 'changeLogoName',
    value: value,
});

f.store/login/reducer.js

// 导入state数据
import initState from './state'

export default (state = initState, action) => {
    switch (action.type) {
        case 'changeLogoName':
            const newState = JSON.parse(JSON.stringify(state));//简单的深拷贝
            newState.logoName = action.value;
            return newState;
        default: 
            return state
    }
}

g. store/reducer.js

import { combineReducers } from 'redux'
import reducer_login from './login/reducer'

export default combineReducers({
    reducer_login
})

h. store/index.js

import {createStore} from 'redux';
import reducer from './reducer';
// store是唯一的
// 只有store才能改变自己的内容(state)
// reducer必须是纯函数
// 把 reducer 放进 createStore 里 创建store
const store = createStore(reducer);
export default store;

文件代码已经写好,下面放入view层
下面图片展示用到的代码

// 取自定义的action函数
import {getLogoNameAction} from '../../../store/login/action'
this.state = {
            collapsed: false,
            storeData: store.getState().reducer_login, 
 }
  store.subscribe(this.StoreChange)
  StoreChange = () => {
        this.setState({storeData: store.getState().reducer_login})
    }

在这里插入图片描述
在这里插入图片描述
大功告成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值