redux相关

一、redux要解决的问题
React是DOM的一个抽象层、单向数据流,解决视图层,但它没涉及:代码结构、(无层级关系的)组件之间的通信。有层级关系的组件通信容易解决,然而当发生状态共享或一个组件需要改变另一个与之无层级关系的组件的状态时,不使用 Redux 等状态管理工具,代码会乱。用Redux可以很有条理地查询和改变状态。

二、Redux的三大原则和数据流的管理:
来源https://www.cnblogs.com/rudylemon/p/redux.html
Redux三大原则:
1、单一数据源,
2、state是只读的,
3、纯函数修改state,
Redux数据流的管理:
1、action:携带新数据。
2、reducer:改变旧数据。
3、Store:把action和reducer联系到一起,负责维持、获取和更新state。
4、生命周期:
调用Store.dispatch(action)->reducer执行->state改变->state树改变。

附、Redux主要代码
```javascript
createStore(
rootReducer,
preloadedState,
compose(
applyMiddleware(thunkMiddleware),
DevTools.instrument()
)/*这是增强函数*/
);
function createStore(reducer, preloadedState, enhancer) {
enhancer(createStore)(reducer, preloadedState);
function getState(){}
function subscribe(listener){}
function dispatch(action){}
dispatch({ type: ActionTypes.INIT });
return {}
}
function combineReducers(reducers) {
finalReducers[key] = reducers[key];
return function combination() {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var action = arguments[1];
nextStateForKey = reducer(previousStateForKey, action)
var hasChanged = false;
return hasChanged ? nextState : state;
};
}
function compose() {
for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {
funcs[_key] = arguments[_key];
}
return funcs.reduce(function (a, b) { /*a为compose的第1个参数,b为compose的第2个参数,*/
return function () {/*返回值为增强函数*/
return a(b.apply(undefined, arguments));
};
});
}
function applyMiddleware() {
/*中间件(middleware)让Reducer在异步操作结束后自动执行*/
/*applyMiddleware将所有中间件组成一个数组,依次执行*/
/*同步操作只要发出一种 Action 即可,异步操作的差别是它要发出三种 Action。*/
for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {
middlewares[_key] = arguments[_key];
}
return function (createStore) {/*返回值为compose的第1个参数*/
return function (reducer, preloadedState, enhancer) {
var store = createStore(reducer, preloadedState, enhancer);
var _dispatch = store.dispatch;
var chain = [];
return _extends({}, store, {
dispatch: _dispatch
});
};
};
}
```

原文地址:https://www.cnblogs.com/gushixianqiancheng/p/10962928.html

时间: 2024-10-09 19:49:09

redux相关的相关文章

Flux --&gt; Redux --&gt; Redux React 入门 基础实例使用

本文的目的很简单,介绍Redux相关概念用法 及其在React项目中的基本使用 假设你会一些ES6.会一些React.有看过Redux相关的文章,这篇入门小文应该能帮助你理一下相关的知识 一般来说,推荐使用 ES6+React+Webpack 的开发模式,但Webpack需要配置一些东西,你可以先略过,本文不需要Webpack基础 入门,只是一些基础概念和用法的整理,更完整的内容推荐去看看文档,英文,中文 (不过我个人认为,官方文档的例子相对来说太复杂了,很难让新手马上抓住重点) (官方的例子正

Redux生态系统

生态系统 Redux 是一个体小精悍的库,但它相关的内容和 API 都是精挑细选的,足以衍生出丰富的工具集和可扩展的生态系统. 如果需要关于 Redux 所有内容的列表,推荐移步至 Awesome Redux.它包含了示例.样板代码.中间件.工具库,还有很多其它相关内容.要想学习 React 和 Redux ,React/Redux Links 包含了教程和不少有用的资源,Redux Ecosystem Links 则列出了 许多 Redux 相关的库及插件. 本页将只列出由 Redux 维护者

【前端,干货】react and redux教程学习实践(二)。

前言 这篇博文接 [前端]react and redux教程学习实践,浅显易懂的实践学习方法. ,上一篇简略的做了一个redux的初级demo,今天深入的学习了一些新的.有用的,可以在生产项目中使用的前端架构,我将尽量以最简单的语言描述,如果有童鞋看不懂,也可以私下问我. 复习 前一节我们已经知道,一个redux应用,主要有几个概念,它们的共同作用都是管理一个全局state,使react组件的state集中处理,想一下你在写react组件的时候,组件的state总是或多或少与父级组件有关联,一般

基于Redux的ReactNative项目开发总结(一)

写在前面 上周把基于Redux的单页应用开发完 紧接着就开始了ReactNative的开发.真的快得不可思议,只花了一周时间,我们两个人就分工把APP也开发完了,并且同时兼容IOS操作系统和Android操作系统.内部测试了一轮,流畅性和用户体验方面也都相当给力! 接下去几篇依次介绍项目开发中领悟的技巧和遇到的坑. 项目架构 和React开发的单页应用不同,ReactNative开发不需要依赖webpack,facebook已经提供的一套基于NodeJS的转换和运行工具,这里不多做介绍.项目的架

利用 React/Redux/React-Router 4/webpack 开发大型 web 项目时如何按需加载

如何设计一个大型 web 项目? React + webpack 如何按需加载? React + React-Router 4 + webpack 如何按需加载? React + Redux + React-Router 4 + webpack 如何按需加载? 实录提要: bundle-loader 和 Webpack 内置的 import() 有什么区别? 按需加载能否支持通过请求后台数据,动态配置页面的的应用场景? 参与过几个 React 项目,被依赖包搞的晕晕的,不知道该怎么选择? 什么包

React: 研究Redux的使用

一.简介 在上一篇文章中,大概讲了下Flux设计模式的使用,在末尾顺便提了一些基于Flux的脚本库,其中Redux已经毋庸置疑地成为了众多脚本库的翘楚之一.是的,Redux是基于Flux开发的,Redux库的尺寸非常小,代码量少,核心目的仍是处理数据流变化的问题.Redux并不完全是Flux,它只是类Flux的脚本库,它移除了Dispatcher这个概念,现在的结构是包含Store.Action.Action生成器.以及用于修改State的Action对象.在Redux中,对于State的管理采

nextjs的开发使用(二)---引入redux状态管理

在上篇文章中,基于react的nextjs服务端渲染框架学习使用 学习了解了一些关于nextjs的东西,并做了一个小demo,这篇文章将对上篇文章做一个补充,在nextjs中引入redux 安装 // 安装redux相关依赖 yarn add redux redux-saga react-redux // 安装next.js对于redux的封装依赖包 yarn add next-redux-wrapper next-redux-saga yarn add redux react-redux 创建

React多页面应用脚手架-v1.3.0

react-multi-page-app是一个基于react和webpack的多页面应用架构,通过编译生成对应目录结构清晰的静态页面,实现多页面便捷开发维护.1.3.0 版本对项目整体做了一个全面的升级,添加修改的以下几个方面: 增加项目创建命令rppx-cli 创建Demo展示页面 完善修改REAMDME(中文/英文) 增加了redux的使用 优化目录结构 优化整体代码 安装及使用 全局安装rppx-cli命令并创建自己的react多页项目 安装rppx-cli $ npm install r

react部署

React项目搭建与部署 React项目搭建与部署 一,介绍与需求 1.1,介绍 1.1.1,React简介 React 是一个用于构建用户界面的 JAVASCRIPT 库. React主要用于构建UI,很多人认为 React 是 MVC 中的 V(视图). React 起源于 Facebook 的内部项目,用来架设 Instagram 的网站,并于 2013 年 5 月开源. React 拥有较高的性能,代码逻辑非常简单,越来越多的人已开始关注和使用它. 1.1.2,React特点 声明式设计