Redux API 作用
createStore 用于创建一个store对象
bindActionCreators 用于简化操作,不用开发者手动触发dispatch
React-redux API 作用
Provider Provider用于包裹根组件,使所有被包裹的组件都能通过connect访问store,以便进行跨组件通信
Connect Connect用于连接react和store中的数据,在被Provider包裹的组件中,通过connect方法可以将store中的数据映射到组件的props中
import React from 'react';
import ReactDOM from 'react-dom';
import Counter from '../src/Components/counter';
import { createStore } from 'redux'
import { Provider } from 'react-redux';
const initialState = {
count: 0
}
function reducer (state = initialState, action) {
switch (action.type) {
case 'increment':
return {
count: state.count + 1
}
case 'decrement':
return {
count: state.count - 1
}
default:
return state
}
}
const store = createStore(reducer)
ReactDOM.render(
<Provider store = { store }>
<Counter />
</Provider>,
document.getElementById('root')
);

Counter.js

import React from 'react';
import { connect } from 'react-redux'
import { bindActionCreators } from 'redux'
import * as actionCreators from './actionCreators'
function Counter ({count, increment, decrement}) {
console.log('increment', increment)
return (
<div>
<button type="button" onClick={increment} >+</button>
<span>{count}</span>
<button type="button" onClick={decrement} >-</button>
</div>
)
} // 1. connect 方法会帮助我们订阅store,当store中的黄台发生更改的时候,会帮助我们重新渲染组件
// 2. connect 方法可以让我们获取store中的状态,将状态通过组件的props属性映射给组件
// 3. connect 方法可以让我们获取 dispatch 方法 // 这里的state就是store存储的数据, mapStateToProps返回对象
const mapStateToProps = state => ({
count: state.count
}) // mapDispatchToProps返回对象, 返回的对象会被映射到props中 // const mapDispatchToProps = dispatch => ({
// increment () {
// dispatch({type: 'increment'})
// },
// decrement () {
// dispatch({type: 'decrement'})
// }
// }) // 对于mapDispatchToProps以上的写法可以进一步简化操作,这里我们可以用redux的bindActioCreators方法
/*
个人理解: 以前时通过dispatch去触发每个action,现在通过bindActionCreators方法,
将我们需要触发的action放在单独的文件处理,
*/ const mapDispatchToProps = dispatch => bindActionCreators(actionCreators,dispatch) export default connect(mapStateToProps, mapDispatchToProps)(Counter);

actionCreators.js

export const increment = () => ({type: 'increment'})
export const decrement = () => ({type: 'decrement'})

redux搭配react-redux进行跨组件通信开发的更多相关文章

  1. Regular进阶: 跨组件通信

    本文由作者郑海波授权网易云社区发布. 背景 在组件化不断深入的大环境下,无论使用哪种 MDV 框架都最终会遇到一个头疼的问题,就是「跨组件通信」. 下图是个简单的例子 这里包含「事件通信」和「数据通信 ...

  2. React:快速上手(2)——组件通信

    React:快速上手(2)——组件通信 向父组件传递数据 父组件可以通过设置子组件的props属性进行向子组件传值,同时也可以传递一个回调函数,来获取到子组件内部的数据. 效果演示 子组件是输入框,父 ...

  3. 【JAVASCRIPT】React学习- 数据流(组件通信)

    摘要 react 学习包括几个部分: 文本渲染 JSX 语法 组件化思想 数据流 一 组件通信如何实现 父子组件之间不存在继承关系 1.1 父=>子通信 父组件可以通过 this.refs.xx ...

  4. react复习总结(2)--react生命周期和组件通信

    这是react项目复习总结第二讲, 第一讲:https://www.cnblogs.com/wuhairui/p/10367620.html 首先我们来学习下react的生命周期(钩子)函数. 什么是 ...

  5. vue跨组件通信的几种方法

    http://www.tuicool.com/articles/jyM32mA 在开发组件的时候,一定会遇到组件的通信,比如点击一个图标出现弹窗和蒙层,这三个分别是不同的组件.管理他们之间的状态就成了 ...

  6. react 前端项目技术选型、开发工具、周边生态

    react 前端项目技术选型.开发工具.周边生态 声明:这不是一篇介绍 React 基础知识的文章,需要熟悉 React 相关知识 主架构:react, react-router, redux, re ...

  7. react第六单元(react组件通信-父子组件通信-子父组件通信-跨级组件的传参方式-context方式的传参)

    第六单元(react组件通信-父子组件通信-子父组件通信-跨级组件的传参方式-context方式的传参) #课程目标 1.梳理react组件之间的关系 2.掌握父子传值的方法 3.掌握子父传值的方法 ...

  8. 37行代码构建无状态组件通信工具-让恼人的Vuex和Redux滚蛋吧!

    状态管理的现状 很多前端开发者认为,Vuex和Redux是用来解决组件间状态通信问题的,所以大部分人仅仅是用于达到状态共享的目的.但是通常Redux是用于解决工程性问题的,用于分离业务与视图,让结构更 ...

  9. react/redux组件库、模板、学习教程

    开源的有蚂蚁金服的: 1.https://pro.ant.design/index-cn 2.https://pro.ant.design/docs/getting-started-cn 3.http ...

随机推荐

  1. JAVA垃圾回收分代处理思想

    原文链接:http://www.cnblogs.com/laoyangHJ/archive/2011/08/17/JVM.html JVM分代垃圾回收策略的基础概念 JVM分代垃圾回收策略的基础概念 ...

  2. Spring Data JPA:解析JpaSpecificationExecutor & Specification

    源码 在前面关于SimpleJpaRepository的文章[地址]中可以得知,SimpleJpaRepository间接实现了JpaSpecificationExecutor接口,本文就详细探究一下 ...

  3. go协程调度

    目录 前言 1. 线程池的缺陷 2.Goroutine 调度器 3.调度策略 3.1 队列轮转 3.2 系统调用 3.3 工作量窃取 4.GOMAXPROCS设置对性能的影响 参考 前言 Gorout ...

  4. ubuntu 设置简单密码

    ubuntu自带的修改密码界面要求比较长.比较复杂的密码.但通过命令行可以不受此限制. 用如下命令,按提示输入密码即可. sudo passwd username

  5. Qt5之事件学习总结

    首先要明白一个概念,事件和信号并不一样,比如单击一下鼠标,就会产生鼠标事件(QMouseEvent),是对这个动作的描述,而因为按钮被按下了,按钮会发出clicked()的单击信号(是按钮控件产生的) ...

  6. 1.深入TiDB:初见TiDB

    转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com/archives/584 本篇文章应该是我研究的 TiDB 的第一篇文章,主要是介绍整个 ...

  7. python爬区csdn文章信息(原始稿)

    使用python对csdn的博主文章进行爬取,期间又遇到了新的问题和旧的已经遇到过的问题.首先做一个笔记,免得以后遇到同样的问题时还得浪费时间和经历. 刚开始目的没那么明确,主要在于熟悉相关的规则及流 ...

  8. Kubernetes-Pod介绍(二)-生命周期

    前言 本篇是Kubernetes第五篇,大家一定要把环境搭建起来,看是解决不了问题的,必须实战. Kubernetes系列文章: Kubernetes介绍 Kubernetes环境搭建 Kuberne ...

  9. AspectJWeaver文件写入gadget详解和两种应用场景举例

    目录 0 前言 1 环境 2 gadget解析 2.1 高版本Commons-Collections的防御措施 2.2 获取AspectJWeaver的调用链 2.3 gadget详解 3 两种应用场 ...

  10. Docker安装mysql镜像并进行主从配置

    Docker安装mysql镜像并进行主从配置 1.下载需要的mysql版本镜像 docker pull mysql:5.6 2.启动mysql服务实例(基本启动) #启动主mysql docker r ...