博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
react之路:redux的使用
阅读量:5070 次
发布时间:2019-06-12

本文共 3366 字,大约阅读时间需要 11 分钟。

github仓库地址:

简介

redux主要是用来记录数据状态,然后共享数据。每个react组件都可以获取该数据库中的数据,也可以改变该数据库中的数据。

引入redux

项目目录下的控制台输入:

yarn add redux 或 npm install --save redux

yarn add react-redux 或 npm install --save react-redux

创建store

一般在项目文件夹下创建一个store文件夹,里面创建index.js和reducer.js两个文件

index.js:创建store仓库

1 import { createStore } from 'redux'2 import reducer from './reducer'3 4 const store = createStore(reducer)5 6 export default store

reducer.js:存放store需要的数据

1 const defaultState = {2     focused: false3 }4 5 export default (state = defaultState, action) => {6     return state7 }

使用store

1.app.js中引入Provider以及store,用Provider将整个组件包裹起来,然后将store当作属性传递给Provider,主要的功能是将store提供给整个组件使用

1 import { Provider } from 'react-redux' 2 import store from './store' 3  4 class App extends React.Component { 5     render() { 6         return ( 7             
8 ....... 9
10 )11 }12 }13 14 export default App;

 2.在需要使用store的组件中,先引入connect, 然后创建mapStateToProps和mapDispatchToProps,最后在connect(mapStateToProps, mapDispatchToProps)(组件名)

1 import React from 'react' 2 import { connect } from 'react-redux' 3  4 class Header extend  React.Component { 5  6     render () { 7         return ( 8            
9
10
11 )12 } 13 14 }15 16 /**17 * 将仓库的state映射到props(获取state)18 * @param state19 */20 const mapStateToProps = (state) => {21 return {22 23 }24 }25 26 /**27 * 将dispatch映射到props(改变state)28 * @param dispatch29 */30 const mapDispatchToProps = (dispatch) => {31 return {32 33 }34 }35 36 export default connect(mapStateToProps, mapDispatchToProps)(Header)

3.组件获取store中的数据,以及组件使用action发起改变store数据请求

1 import React from 'react' 2 import { connect } from 'react-redux' 3  4 class Header extend  React.Component { 5  6     render () { 7         return ( 8            
9
14
15 )16 } 17 18 }19 20 /**21 * 将仓库的state映射到props(获取state)22 * @param state23 */24 const mapStateToProps = (state) => {25 return {26 focused: state.focused27 }28 }29 30 /**31 * 将dispatch映射到props(改变state)32 * @param dispatch33 */34 const mapDispatchToProps = (dispatch) => {35 return {36 // 聚焦37 handleInputFocus () {38 const action = {39 type: 'search_focus'40 }41 dispatch(action)42 },43 // 离焦44 handleInputBlur () {45 const action = {46 type: 'search_blur'47 }48 dispatch(action)49 }50 }51 }52 53 export default connect(mapStateToProps, mapDispatchToProps)(Header)

同时,reducer.js需要接收改变store的action请求,并改变store

1 const defaultState = { 2     focused: false 3 } 4  5 export default (state = defaultState, action) => { 6  7     if (action.type === 'search_focus') { 8         return { 9             focused: true10         }11     }12 13     if (action.type === 'search_blur') {14         return {15             focused: false16         }17     }18     19     return state20 }

总结

store的理解:把整个过程理解成对一个图书馆的书籍管理,store相当于一个图书馆,然后reducer里面的数据相当于是图书馆的书籍。

首先需要通过createStore创建一个图书馆,创建图书馆的时候,图书馆的书籍不可能为空,所以创建的时候需要把初始的书籍传入进去,即reducer。

然后需要将该图书馆给所有的人使用,所以需要在app.js通过Provider提供给大家

当某个人需要使用图书馆里面的书的时候,需要使用connect连接起来,并且需要创建使用书籍的方式。

 

转载于:https://www.cnblogs.com/wanghao123/p/11152634.html

你可能感兴趣的文章
lc 145. Binary Tree Postorder Traversal
查看>>
sublime 配置java运行环境
查看>>
在centos上开关tomcat
查看>>
重启rabbitmq服务
查看>>
正则表达式(进阶篇)
查看>>
无人值守安装linux系统
查看>>
【传道】中国首部淘宝卖家演讲公开课:农业本该如此
查看>>
jQuery应用 代码片段
查看>>
MVC+Servlet+mysql+jsp读取数据库信息
查看>>
黑马程序员——2 注释
查看>>
用OGRE1.74搭建游戏框架(三)--加入人物控制和场景
查看>>
转化课-计算机基础及上网过程
查看>>
android dialog使用自定义布局 设置窗体大小位置
查看>>
ionic2+ 基础
查看>>
互联网模式下我们更加应该“专注”
查看>>
myeclipse集成jdk、tomcat8、maven、svn
查看>>
Navicat 提示Cannot create oci environment 解决方式
查看>>
查询消除重复行
查看>>
Sand Making Plant Produced by Red Star
查看>>
读《雷军给郁亮等传统大佬的一句血泪忠告》
查看>>