Redux概述

Redux = Reducer + Flux

安装ant design

yarn add antd

Store的创建

src目录下, 创建store文件夹,创建文件index.js
index.js

import { createStore } from 'redux';
import reducer from './reducer';
const store = createStore(reducer);export default store;

reducer.js

const defaultState = {inputValue: '123',list:[1,2]
}export default (state = defaultState, action) => {if(action.type === 'change_input_value') {const newState = JSON.parse(JSON.stringify(state));newState.inputValue = action.value;return newState;}if(action.type === 'add_todo_item') {const newState = JSON.parse(JSON.stringify(state));newState.list.push(newState.inputValue);newState.inputValue = '';return newState;}console.log(state, action);return state;
}

todoList.js

import store from './store';class TodoList extends Component {constructor(props) {super(props);// 从store中取数据this.state = store.getState();this.handleInputChange = this.handleInputChange.bind(this);this.handleStoreChange = this.handleStoreChange.bind(this);this.handleBtnClick = this.handleBtnClick.bind(this);store.subscribe(this.handleStoreChange);}
}

安装redux 开发工具

  • 工具:redux devtools
  • 监听Input变化

TodoList.js

  <Inputvalue = {this.state.inputValue}placeholder = "todo info"style = {{width: '300px', marginRight: '10px'}}onChange={this.handleInputChange}/><Button type="primary" onClick={this.handleBtnClick}>提交</Button>
handleInputChange(e) {const action = {type: 'change_input_value',value: e.target.value}store.dispatch(action);
}handleStoreChange() {// console.log('store changed');this.setState(store.getState());
}handleBtnClick() {const action = {type: 'add_todo_item'};store.dispatch(action);
}

Redux注意点

  • store是唯一的
  • 只有store能改变自己的内容
  • Reducer必须是纯函数

Redux API

  • createStore
  • store.dispatch
  • store.getState
  • store.subscribe

【React.js】之Redux相关推荐

  1. 彻底征服 React.js + Flux + Redux【讲师辅导】-曾亮-专题视频课程

    彻底征服 React.js + Flux + Redux[讲师辅导]-74574人已学习 课程介绍         [会员免费]链接 http://edu.csdn.net/lecturer/585 ...

  2. React.js 小书 Lesson27 - 实战分析:评论功能(六)

    React.js 小书 Lesson27 - 实战分析:评论功能(六) 本文作者:胡子大哈 本文原文:http://huziketang.com/books/react/lesson27 转载请注明出 ...

  3. 使用webpack2.0 搭建react.js项目

    最近一段时间没有写react.js,发现webpack已经完全升级为2.0了,升级后导致以前的项目不能正常编译,只能重新实践一番 关于webpack2.0和1.x的区别概括起来就是tree shaki ...

  4. React.js 小书 Lesson5 - React.js 基本环境安装

    React.js 小书 Lesson5 - React.js 基本环境安装 本文作者:胡子大哈 本文原文:http://huziketang.com/books/react/lesson5 转载请注明 ...

  5. React.js 2016 最佳实践 徬梓阅读 1584收藏 71

    为什么80%的码农都做不了架构师?>>>    译者按:近几个月React相关话题依旧火热,相信越来越多的开发者在尝试这样一项技术,我们团队也在PC和移动端不断总结经验.2016来了 ...

  6. 撰写本文的所有基本React.js概念

    Update: This article is now part of my book "React.js Beyond The Basics". 更新:本文现在是我的书<超 ...

  7. React.js 入门与实战之开发适配PC端及移动端新闻头条平台课程上线了

    原文发表于我的技术博客 我在慕课网的「React.js 入门与实战之开发适配PC端及移动端新闻头条平台」课程已经上线了,文章中是目前整个课程的大纲,以后此课程还会保持持续更新,此大纲文档也会保持更新, ...

  8. 2020 年,React.js 开发者如何更好地修炼内功?

    整理 | 弯月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) ReactJS(简称Reat)是最流行的前端框架.它由Facebook开发,近年来发展迅猛,已成为了基于组件GUI开发的标 ...

  9. [译] 我多希望在我学习 React.js 之前就已经知晓这些小窍门

    原文地址:What I wish I knew when I started to work with React.js 原文作者:David Yu 译文出自:掘金翻译计划 本文永久链接:github ...

  10. React.js 小书 Lesson1-2 - 前端组件化(一):从一个简单的例子讲起

    React.js 小书 Lesson1-2 - 前端组件化(一):从一个简单的例子讲起 本文作者:胡子大哈 本文原文:http://huziketang.com/books/react/lesson2 ...

最新文章

  1. SSAS使用时间智能解决本年累计、同比、环比【转载】
  2. linux===Ubuntu 上安装 Node.js
  3. linux 命令行简介
  4. 网站SEO中内页标签该如何进行优化?
  5. windows mobile开发循序渐进(6)windows mobile device center 使用问题
  6. [转载] 应急管理体系及其业务流程研究
  7. 传百度最高决策层Estaff成员王路将离职,官方暂未回应...
  8. 查找算法——插值查找
  9. mysql必知必会样例表_《SQL必知必会》笔记1-样例表说明及建表语句
  10. c语言+编程+画图形,C语言图形编程——绘图函数.doc
  11. 第三章 硅谷宠儿 Friendster (一)
  12. 华为ME909s-821a开启LED状态指示灯
  13. index函数在python中的用法_index函数怎么在python中使用
  14. 静态分析之数据流分析与 SSA 入门 (二)
  15. 也谈阻塞、非阻塞、同步、异步
  16. 网络协议和浏览器到网络简单攻防实现的探索(二)
  17. 18:Tomorrow never knows?
  18. oracle memory_error,ORA-27102: out of memory Linux-x86_64 Error: 12: Cannot allocate memory
  19. 气动调节阀泄露该怎么办呢?
  20. 面试——认识不一样的自己

热门文章

  1. 怎么录制微课视频,微课录制技巧
  2. xorg linux终端,Ubuntu使用cvt命令生成xorg.conf下的屏幕分辨率和刷新率
  3. Logback 为日志配置颜色搭配(彩色搭配日志-搭配方案)
  4. gstreamer获取视频采集卡的数据
  5. 【显著性检测】Matlab实现显著性检测SR算法
  6. 将百分制成绩转化为5分制成绩。
  7. 全新ThihkPHP开发聚合支付系统兼容易支付系统网站源码
  8. 4.2.1计算机动画的基本原理教案,4.2.1 计算机动画技术基本原理优质教案设计
  9. 收银系统连接授权服务器失败,超市收银系统错误-COMException 依赖服务或组无法启动(0x8007042C)处理办法...
  10. matlab非线性数值解法,Matlab非线性方程数值解法(2)