redux java_redux简单使用

在前面的随便中有简单的使用过redux和react-redux,但是感觉写在一起,总是理不清楚,后面看了技术胖老师关于redux的视频后,感觉自己又有了新的理解,在这里简单记录一下。

项目准备

首先安装脚手架:npm install -g create-react-app

然后创建项目:create-react-app demo01

项目创建成功后,删除src下面除index.js以后所有的文件,然后新建一个TodoList.js,然后在index.js中引入:

7a9620bd1b985c4fbcb1a9f1cd560135.png

接下来安装AntDesign和redux:

npm install antd --save

npm install --save redux

最后在TodoList.js中引入antd并使用,关于antd的使用和按需加载,在前面的随便有详细介绍。

TodoList.js

import React, { Component } from 'react';

import {Input,Button,List} from'antd'class TodoList extends Component {

constructor(props){

super(props)this.state ={

inputValue:'something',

list:['web','php','node','java','IOS']

}

}

InputChange=(e)=>{this.setState({

inputValue:e.target.value

})

}

addItem=()=>{if(this.state.inputValue){this.setState({

list:[...this.state.list,this.state.inputValue],

inputValue:''})

}

}

delItem(index){

let arr=this.state.list;

arr.splice(index,1);this.setState({

list:arr

})

}

render() {return(

增加

renderItem={(item,index)=>({item})}

/>

);

}

}

exportdefault TodoList;

4c7d298e42db7872bedfe7b07d591ff2.png

现在,基本实现了添加和删除操作,前期的准备工作完成。

创建store仓库

首先,在src文件夹下新建store文件夹,并在store文件夹中新建index.js和reducer.js。

reducer.js

a068db2e5075eea404f2674b40ca84c1.png

index.js

e21b05ef5573ba89139bead481198733.png

在上面的代码中,我们先是在reducer.js中,添加了一些默认的数据,然后暴露了一个用于修改数据的方法函数。

在index.js中,首先引入createStore方法,然后引入reducer后,创建了一个数据存储仓库,最后将这个仓库暴露出去。

组件获得store中的数据

首先需要在组件中引入store,然后进行赋值就可以了。

43060b0ae546d1ee59ae846550eeed59.png

数据改变

想要改变redux里面的state的值,首先需要创建action,action是一个对象,包含两个属性:描述名称和要改变的值,然后通过dispatch()方法传递给store。以input框的onChange事件为例:

81ee62e0caf9309d15b7b88315d44795.png

由于store只是一个仓库,所以在接收到action后,会自动转发给reducer,在reducer中有两个参数:state和action,其中state指的是原仓库的状态,二action指的是新传递的状态。在reducer中拿到新旧数据后,就可以根据action的type进行相应的改变了。但是,由于reducer只能接收state,不能改变state,所以需要声明一个新变量,然后用return返回回去。

a2a4f22660c9ea7795b1e6e5e1d408fb.png

现在,store里面的数据已经更新了,但是组件还没有更新,我们需要在组件的constructor里面订阅redux的状态,才能实时更新组件数据:

cf860394e3cb3deb55ad07e158e1b3d0.png

然后,继续按照这种方法修改添加和删除事件:

b7f90eae7e0167791b54bfa10074808e.png   

410db1d5b7be6877a498d7ef2bebe520.png

代码下载:点这里

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值