react中数据管理:react-redux和redux的使用

---------------根模块App.js中
import {Provider} from ‘react-redux‘;
import store from ‘./store‘;
import Header from ‘./header/Header.js‘;

class App extends Component {
render (){
return (
<Provider store={store}> //Provider将store里面的数据提供给Provider包含的所有模块使用
<Header/>
</Provider>
)
}
}

---------------子模块 Header.js
import {connect} from ‘react-redux‘;

const Header=(props)=>{
return (
<div
onClick={props.handlerClick}
>计数:{props.number}</div>
)
}

const stateToProps=(state)=>{
return ({
number:state.header.number //从传过来的state里取数据赋值给props,因为中间叠了一层header,所以取数据的时候需要从header里面取number的值
})
}

const propsToDispatch=(dispatch)=>{
return {
handlerClick(){
const action={
type:‘change_num‘
}
dispatch(action); //通过dispatch传action给reducer
}
}
}

export default connect(stateToProps,propsToDispatch)(Header); // connect将数据和子模块Header连接起来
---------------根数据store
-------------根数据store:index.js
import {createStore} from ‘redux‘;
import reducer from ‘./reducer.js‘;

export default createStore(reducer);
-------------根数据store:reducer.js
import {combineReducers} from ‘redux‘;
import headerReducer from ‘../header/reducer.js‘;

export default combineReducers({ //combineReducers合并所有的子模块reducer
header:headerReducer
})
---------------子数据header里面的reducer
const defaultState={
number:1
}

export default (state=defaultState,action)=>{
if(action.type===‘change_num‘){ //根据dispatch传过来的action,对数据state进行操作
const newState=JSON.parse(JSON.stringify(state));
newState.number++;
return newState;
}
return state;
}

原文地址:https://www.cnblogs.com/laidans/p/11622230.html

时间: 2024-10-22 02:45:02

react中数据管理:react-redux和redux的使用的相关文章

react中为什么要使用immutable

因为在react中,react的生命周期中的setState()之后的shouldComponentUpdate()阶段默认返回true,所以会造成本组件和子组件的多余的render,重新生成virtual dom,并进行virtual dom diff,所以解决办法是我们在本组件或者子组件中的shouldComponentUpdate()函数中比较,当不需要render时,不render. 当state中的值是对象时,我们必须使用深拷贝和深比较! 如果不进行深拷贝后再setState,会造成t

在React中使用Redux

修复遗留问题 webpack.prod.config.js中缺少了对path库的引用,执行构建npm run build:prod的时候失败.在文件开始的地方引入node.js的path库就可以了. package.json里面定义了一个build:dev的脚本,这个脚本其实有点多余,不过有时候需要打包测试版本的文件,所以还是需要存在.主要有个问题是webpack.dev.config.js中output节点下错误定义了path的值为根目录'/',这在使用npm start命令启动运行时打包的时

react系列(五)在React中使用Redux

上一篇展示了Redux的基本使用,可以看到Redux非常简单易用,不限于React,也可以在Angular.Vue等框架中使用,只要需要Redux的设计思想的地方,就可以使用它. 这篇主要讲解在React中使用Redux,首先是安装. 安装React Redux yarn add redux yarn add react-redux 有两个概念: 1.容器组件(Container Components) 2.展示组件(Presentational Components) 展示组件 更关注数据展示

react中使用redux管理状态流程

1.在项目中安装redux插件 npm install redux -S 2.针对单独的view组件定义store状态存储对象,参数为对状态的更新操作函数 import { createStore } from 'redux'; const reducer = (state = 0, action) => { switch (action.type) { case 'INCREMENT': return state + 1; case 'DECREMENT': return state > 0

react中redux的理解

定义 redux可以看作是flux的进阶版,主要用于react中公共状态(数据)的管理 redux底层原理 redux有一个createStore方法,这个方法用户创建公共存储空间,createStore方法接收一个纯函数作为作为参数,在纯函数中处理数据并返回处理后的数据.当createStore方法执行完成后会返回一个store对象,这个对象内提供一些方法,组件中通过调用store的这些方法去获取或者修改公共存储空间内的数据. 这里说store的几个方法:dispatch用于发送action;

深入理解react中的虚拟DOM、diff算法

文章结构: React中的虚拟DOM是什么? 虚拟DOM的简单实现(diff算法) 虚拟DOM的内部工作原理 React中的虚拟DOM与Vue中的虚拟DOM比较 React中的虚拟DOM是什么?   虽然React中的虚拟DOM很好用,但是这是一个无心插柳的结果.   React的核心思想:一个Component拯救世界,忘掉烦恼,从此不再操心界面. 1. Virtual Dom快,有两个前提 1.1 Javascript很快  Chrome刚出来的时候,在Chrome里跑Javascript非

Immutable 详解及 React 中实践

本文转自:https://github.com/camsong/blog/issues/3 Shared mutable state is the root of all evil(共享的可变状态是万恶之源) -- Pete Hunt 有人说 Immutable 可以给 React 应用带来数十倍的提升,也有人说 Immutable 的引入是近期 JavaScript 中伟大的发明,因为同期 React 太火,它的光芒被掩盖了.这些至少说明 Immutable 是很有价值的,下面我们来一探究竟.

React中的fetch请求相关

fetch在reactjs中等同于 XMLHttpRequest,它提供了许多与XMLHttpRequest相同的功能,但被设计成更具可扩展性和高效性. Fetch 的核心在于对 HTTP 接口的抽象,包括 Request,Response,Headers,Body,以及用于初始化异步请求的 global fetch.得益于 JavaScript 实现的这些抽象好的 HTTP 模块,其他接口能够很方便的使用这些功能:除此之外,Fetch 还利用到了请求的异步特性--它是基于 Promise 的.

【React自制全家桶】四、React中state与props的分析与比较

一.state 1.state的作用 state是React中组件的一个对象.React把用户界面当做是状态机,想象它有不同的状态然后渲染这些状态,可以轻松让用户界面与数据保持一致. React中,更新组件的state,会导致重新渲染用户界面(不要操作DOM).简单来说,就是用户界面会随着state变化而变化. 2.state工作原理 常用的通知React数据变化的方法是调用setState(data,callback).这个方法会合并data到this.state,并重新渲染组件.渲染完成后,