广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >react.js框架Redux基础案例详解
  • 579
分享到

react.js框架Redux基础案例详解

2024-04-02 19:04:59 579人浏览 安东尼
摘要

React.js框架Redux https://GitHub.com/reactjs/redux 安装: npm install redux react-redux #基于rea

React.js框架Redux

https://GitHub.com/reactjs/redux

安装:


npm install redux react-redux
#基于react,我们在前面已经安装过了

Redux参考文档:
Http://redux.js.org/

Redux核心概念:Store

我们可以简单的理解为就是用来存储 各个组件的State或你自己定义的独立的state,对state进行统一读取、更新、监听等操作。
http://redux.js.org/docs/basics/Store.html

这里写图片描述

Reduce

官方告诉我们redux的基本使用如下:


import {createStore} from "redux";
import todoApp from "./reducers";
let store = createStore(todoApp);

createStore()参数传入的是一个函数Function。
在redux里的概念叫做:Reduce
Reduce的基本形式:


function myFun(state,action){
  // ...
}

当然我们也可以使用esmascript 2015的箭头函数形式来定义。

实战演练

1、我们先来定义一个Reduce

InfoReduce.js:


//测试数据
let info = {
    title:"测试标题",
    clicknum:0
};

// 把数据通过参数船体
export  default (state = info, action)=>{


    return state; //返回的就是测试数据
}

2、Reduce准备完成,我们开始使用 Redux


import InfoReduce  from "./../redux/InfoReduce";

import {createStore} from "redux";
let store = createStore(InfoReduce);

3、Redux中很重要的概念store已经创建,我们看看在组件里如何使用?


// 定义一个名叫InfoDetail的组件
class InfoDetail extends  React.Component{
    // 构造
      constructor(props) {
        super(props);
        // 初始状态
        this.state = {
            infoData:store.getState() //通过store对象的方法获取数据
        };
      }


        render(){
            return <div>
                <h2>新闻标题:{this.state.infoData.title}</h2>
                <span>点击量:{this.state.infoData.clicknum}</span>
                <p><button>修改点击量</button></p>
            </div>
        }
}

通过store.getState()获取数据。

这里写图片描述

到这里我们基本明白了:Reducers就是规定的一种函数,它产生新的state然后传递给Store;我们的组件通过Store来获取state更新组件数据。

了解action

官方文档对action的说明:
http://redux.js.org/docs/basics/Actions.html

其实通过action这个单词我们可以猜测到是用来处理业务的操作。

在我们前面的代码中,哪里还有action
我们定义Reducer函数的时候,第二个参数就是:


export  default (state, action)=>{}

1、既然action是操作,表示我们组件上事件处理函数中需要它


<button onClick={this.addClick.bind(this)}>修改点击量</button>

给按钮绑定一个点击事件的函数addClick

2、下面来看看 addClick 函数里有什么乾坤?


        addClick(){
            //修改state
            store.dispatch({
                type:"INFO_CLICK"
            })

            this.setState({ //更新state
                infoData:store.getState()
            })
        }

this.setState()我们前面学过这是用来更新状态(state);
store.dispatch()这又是我们Redux里的东东了,这个方法其实就的调度action的。
通过type来区分。

3、根据我们的需求,我们的action要处理的业务逻辑是 对clicknum增加


//测试数据
let info = {
    title:"测试标题",
    clicknum:0
};

// 把数据通过参数船体
export  default (state = info, action)=>{

    if (action.type == "INFO_CLICK"){
        let oldNum = state.clicknum;
        oldNum++;

        // 返回新的数据
        return Object.assign({},state,{clicknum:oldNum});
    }

    return state; //返回的就是测试数据
}

我们的Reducer函数中,通过action.type来判断,然后处理业务逻辑相关。

到这里,我们可能迷惑了,Redux怎么还麻烦了,是的,一般是在业务逻辑很复杂的项目才使用的

这里写图片描述

到此这篇关于react.js框架Redux基础案例详解的文章就介绍到这了,更多相关react.js框架Redux基础内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: react.js框架Redux基础案例详解

本文链接: https://www.lsjlt.com/news/135094.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • react.js框架Redux基础案例详解
    react.js框架Redux https://github.com/reactjs/redux 安装: npm install redux react-redux #基于rea...
    99+
    2022-11-12
  • MyBatis框架零基础快速入门案例详解
    目录一、创建数据库和表二、创建maven工程三、代码编写1、编写Student实体类2、编写DAO接口StudentDao3、编写DAO接口Mapper映射文件StudentDao....
    99+
    2022-11-13
  • Java基础之集合框架详解
    目录一、前言二、集合的由来?三、集合和数组的区别?四、Collection集合的功能概述?五、Collection集合存储字符串并遍历?(迭代器)六、...
    99+
    2022-11-12
  • Python之基础函数案例详解
    函数就是把具有独立功能的代码块封装成一个小模块,可以直接调用,从而提高代码的编写效率以及重用性, 需要注意的是, 函数需要被调用才会执行, 而调用函数需要根据函数名调用 ...
    99+
    2022-11-12
  • Java之JSF框架案例详解
    这是一个分为两部分的系列,其中我介绍了JSF 2及其如何适合Java EE生态系统。 在第1部分中,我将介绍JavaServer Pages(JSF)背后的基本思想 ,在第2部分中,...
    99+
    2022-11-12
  • MFC框架之OnIdle案例详解
    先看下MSDN对OnIdle()介绍: CWinApp::OnIdle OnIdle is called in the default message loop when ...
    99+
    2022-11-12
  • MyBatis框架零基础快速入门案例分析
    这篇文章主要讲解了“MyBatis框架零基础快速入门案例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MyBatis框架零基础快速入门案例分析”吧!一、创建数据库和表数据库名ssm,数据...
    99+
    2023-06-29
  • IOS之WebSocket框架Starscream案例详解
    传统的网络技术 (也就是 Berkeley sockets) 被认为是可靠和稳定的。但是 Berkeley socket 在某些 web 技术,比如代理和防火墙下不太好使。WebSo...
    99+
    2022-05-20
    IOS websocket
  • Java Structs框架原理案例详解
    1 Struts2框架内部执行过程 Structs请求过程源码分析参考链接https://www.jb51.net/article/220585.htm 从上图来看,整个框架的运...
    99+
    2022-11-12
  • Java基础之枚举Enum类案例详解
    目录一、文章序言二、代码实践三、面试相关一、文章序言 Java中引用类型:数组、类、接口、枚举、注解 枚举这个既熟悉又陌生的东西具体再哪里可以使用呢? 什么是枚举? 枚举是一个引用...
    99+
    2022-11-12
  • Java基础详解之集合框架工具Collections
    目录一、Collections二、Collections中的常见方法三、Aarrays:用于对数组操作的工具类四、二分查找过程中的默认比较器五、集合转化为数组六、增强for循环七、关...
    99+
    2022-11-12
  • Spring框架AOP基础之代理模式详解
    目录一、模拟场景二、代理模式静态代理动态代理一、模拟场景 创建接口 public interface Calculator { int add(int i, int j); ...
    99+
    2022-11-13
    Spring代理模式 Spring AOP代理模式
  • MyBatis框架简介及入门案例详解
    目录前言MyBatis简介快速入门映射文件sql片段与resultMapMyBatis的增删改查1.添加操作2.修改操作3.删除操作前言 传统的JDBC操作数据库都是通过写一个jav...
    99+
    2022-11-13
    MyBatis 简介 MyBatis 案例
  • golang微服务框架基础Gin基本路由使用详解
    目录概述1. 基本路由2. 路由参数获取URL路径全部参数获取URL路径单个参数获取URL中指定的参数获取指定默认值的参数的概述 路由是自定义url地址执行指定的函数,良好的路由定义...
    99+
    2022-11-12
  • python中mpi4py的所有基础使用案例详解
    python中mpi4py的基础使用 大多数 MPI 程序都可以使用命令 mpiexec 运行。在实践中,运行 Python 程序如下所示: $ mpiexec -n 4 pytho...
    99+
    2022-11-11
  • Java基础学习之IO流应用案例详解
    目录一、点名器二、集合到文件三、文件到集合一、点名器 需求: 我有一个文件里面存储了班级同学的姓名,每一个姓名占一行,要求通过程序实现随机点名器 实现步骤: 创建字符缓冲输入流对象创...
    99+
    2022-11-13
  • MySQL基础篇(06):事务管理,锁机制案例详解
    本文源码:GitHub·点这里 || GitEE·点这里 一、锁概念简介 1、基础描述 锁机制核心功能是用来协调多个会话中多线程并发访问相同资源时,资源的占用问题。锁机制是一个非常大的模块,贯彻MySQL的几大核心难点模块:索引,...
    99+
    2018-06-26
    MySQL基础篇(06):事务管理,锁机制案例详解
  • SpringBoot整合Security实现权限控制框架(案例详解)
    目录一、前言二、环境准备2.1、数据库表2.2、导入依赖2.3、配置文件2.4、WebSecurityConfig Security的主要配置类:2.5、Security身份验证2....
    99+
    2022-11-12
  • SpringMVC框架整合Junit进行单元测试(案例详解)
    本文主要介绍在SpringMVC框架整合Junit框架进行单元测试。闲话少述,让我们直入主题。 系统环境 软件 ...
    99+
    2022-11-12
  • 使用pythonflask框架开发图片上传接口的案例详解
    python版本:3.6+ 需要模块:flask,pillow 需求:开发一个支持多格式图片上传的接口,并且将图片压缩,支持在线预览图片。 目录结构: app.py编辑内容: fr...
    99+
    2022-11-10
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作