React+Redux学习笔记:React+Redux简易开发步骤

前言

React+Redux 分为两部分:

    1. UI组件:即React组件,也叫用户自定义UI组件,用于渲染DOM
    2. 容器组件:即Redux逻辑,处理数据和业务逻辑,支持所有Redux API,参考之前的文章:Redux学习笔记:Redux简易开发步骤

而React+Redux是以上两部分结合起来,方便在React中使用Redux,专用库为React-Redux.js。
React-Redux.js新增了一些新方法:

    1. Provider:容器跟组件,可直接把外部的state传递给所有子组件和UI组件;
    2. mapStateToProps:输入逻辑,把外部的state转化为props对象传递给用户自定义UI组件;
    3. mapDispatchToProps:输出逻辑,根据用户的操作,处理具体Action,并通过dispatch触发更新state;
    4. connect:根据UI组件、输入逻辑、输出逻辑生成容器组件;

源代码

本文实例源代码参考:React-Redux-Primary-Demo 中的webapp/redux/index2.js。

演示地址:index2.html

具体开发步骤

1.创建主文件js,比如index.js

2.定义Render入口,即容器组件

    ReactDOM.render(
      <Provider store={store}>
        <App />
      </Provider>,
      document.getElementById(‘root‘)
    )

说明:<Provider>是包裹在所有容器外面的根组件,目的是可以直接传递state给所有子组件。(利用React组件的context,可参考:React组件实现越级传递属性

3.connect根据UI组件生成容器组件,并定义输入(mapStateToProps)、输出(mapDispatchToProps)逻辑

    const App = connect(
      mapStateToProps,
      mapDispatchToProps
    )(Counter)

说明:connect将用户自定义的UI组件(即Counter)和React-Redux自动生成的容器组件(即App)连起来,目的是:前者负责UI展示,后者负责逻辑处理。

4.定义用户自定义UI组件,即React Component

    class Counter extends Component {
      render() {
        const { value, onIncreaseClick } = this.props
        return (
          <div>
            <span>{value}</span>
            <button onClick={onIncreaseClick}>累加一次</button>
          </div>
        )
      }
    }

5.定义输入输出逻辑

    // 输入逻辑:
    //    将state映射成props传递给UI组件(即Counter组件)
    function mapStateToProps(state) {
      return {
        value: state.count
      }
    }

    // 输出逻辑:
    //    将用户对UI组件的操作映射成Action,通过dispatch,触发reducer(即conter),生成新的state
    function mapDispatchToProps(dispatch) {
      return {
        onIncreaseClick: () => dispatch({ type: ‘increase‘ })
      }
    }

6.创建store,并绑定reducer

const store = createStore(counter); // createStore的第一个参数必须是个函数,mapDispatchToProps中执行dispatch()时,该函数就叫reducer

7.定义Reducer,生成新的state

    function counter(state = { count: 0 }, action) {
      const count = state.count
      switch (action.type) {
        case ‘increase‘:
          return { count: count + 1 }
        default:
          return state
      }
    }

说明:state生成之后,会自动触发mapStateToProps,并渲染View,不需要subscribe监听state变化。

时间: 2024-10-09 03:36:23

React+Redux学习笔记:React+Redux简易开发步骤的相关文章

struts2学习笔记2 -struts2的开发步骤和工作原理

struts2的开发步骤: 1.先定义一个能发送请求的页面,可以是链接,也可以是表单(form) 2.开发action类,struts2对action并没有过多的要求,只要求: a 推荐实现action接口,或继承actionsupport类 b 为每个请求参数都提供feild,并为之提供相应的setter和getter方法 c 该action类应该有无参数构造器 3.配置action类 所有action都需要放在package里配置. <action>元素有如下属性: name 指定该act

Android:日常学习笔记(8)———探究UI开发(5)

Android:日常学习笔记(8)---探究UI开发(5) ListView控件的使用 ListView的简单用法 public class MainActivity extends AppCompatActivity { private String[] data={"Apple","Banana","Orange","Watermelon","Pear","Grape","

cocos2dx游戏开发——微信打飞机学习笔记(一)——开发准备

一.环境的搭建 1.Windows开发准备: (1)软件下载及安装 •下载Cocos2d-x 最新版本:http://www.cocos2d-x.org/download 或者从Cocos2d-x GitHub主页中克隆Develop分支:https://github.com/cocos2d/cocos2d-x •配置Python 2.7 环境:http://www.python.org/download/releases/ •建议IDE:Visual Studio 2013 •运行cocos2

Android:日常学习笔记(8)———探究UI开发(2)

Android:日常学习笔记(8)---探究UI开发(2) 对话框 说明: 对话框是提示用户作出决定或输入额外信息的小窗口. 对话框不会填充屏幕,通常用于需要用户采取行动才能继续执行的模式事件. 提示: Dialog 类是对话框的基类,但您应该避免直接实例化 Dialog,而是使用下列子类之一: AlertDialog此对话框可显示标题.最多三个按钮.可选择项列表或自定义布局. DatePickerDialog 或 TimePickerDialog此对话框带有允许用户选择日期或时间的预定义 UI

springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定

springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定 springmvc学习笔记13-springmvc注解开发之集合类型參数绑定 数组绑定 需求 表现层实现 list绑定 需求 表现层实现 map绑定 本文主要介绍注解开发的集合类型參数绑定,包含数组绑定,list绑定以及map绑定 数组绑定 需求 商品批量删除,用户在页面选择多个商品.批量删除. 表现层实现 关键:将页面选择(多选)的商品id,传到controller方法的形參,方法形參使用数组接收页面请求的多个商

Android:日常学习笔记(7)———探究UI开发(1)

Android:日常学习笔记(7)---探究UI开发(1) 常用控件的使用方法 TextView 说明:TextView是安卓中最为简单的一个控件,常用来在界面上显示一段文本信息. 代码: <TextView android:id="@+id/text_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:text=&qu

Android:日常学习笔记(7)———探究UI开发(4)

Android:日常学习笔记(7)---探究UI开发(4) UI概述  View 和 ViewGrou Android 应用中的所有用户界面元素都是使用 View 和 ViewGroup 对象构建而成.View 对象用于在屏幕上绘制可供用户交互的内容.ViewGroup 对象用于储存其他 View(和 ViewGroup)对象,以便定义界面的布局. 说明: View是安卓中最基本的一种UI,它可以在屏幕上绘制一块矩形区域,并能响应这块区域的各种事件,我们使用的各种控件都是在View的基础上进行的

springmvc学习笔记(11)-springmvc注解开发之简单参数绑定

springmvc学习笔记(11)-springmvc注解开发之简单参数绑定 springmvc学习笔记11-springmvc注解开发之简单参数绑定 spring参数绑定过程 默认支持的类型 简单类型 pojo绑定 自定义参数绑定实现日期类型绑定 springmvc和struts2的区别 本文主要介绍注解开发的简单参数绑定,包括简单类型.简单pojo以及自定义绑定实现类型转换 spring参数绑定过程 从客户端请求key/value数据,经过参数绑定,将key/value数据绑定到contro

springmvc学习笔记(13)-springmvc注解开发之集合类型参数绑定

springmvc学习笔记(13)-springmvc注解开发之集合类型参数绑定 springmvc学习笔记13-springmvc注解开发之集合类型参数绑定 数组绑定 需求 表现层实现 list绑定 需求 表现层实现 map绑定 本文主要介绍注解开发的集合类型参数绑定,包括数组绑定,list绑定以及map绑定 数组绑定 需求 商品批量删除,用户在页面选择多个商品,批量删除. 表现层实现 关键:将页面选择(多选)的商品id,传到controller方法的形参,方法形参使用数组接收页面请求的多个商