[email protected](53)[email protected](2)- action

时间:2024-07-10 22:26:29浏览次数:12  
标签:const React action import Redux type numberAction store

目录

1,特点

是一个平面对象(plain-object)。换句话说,就是通过字面量创建的对象,它的 __proto__ 指向 Object.prototype

该对象有2个属性:

const action = {
	type: 'add',
	payload: 3
}

1.1,payload

表示额外需要传递的附加数据。

只是约定俗成用该属性,不做强制要求。

1.2,type

1,必须type 属性,用于描述操作的类型,但没有对 type 值的类型做限制。

2,在大型项目中,由于操作类型比较多,为了避免硬编码,会将 actiontype 放到一个单独的文件中。

3,为了方便传递 action,通常会使用一个纯函数来创建它。该函数被称为 action creator

纯函数:

  • 不能改变参数。
  • 没有异步。
  • 不对外部环境中的数据有影响。

举例:

// actionTypes.js
export const ADD = Symbol("add");
export const SET = Symbol("set");
// action.js
import { ADD, SET } from "./actionTypes";

export function getAddAction() {
    return {
        type: ADD,
    };
}

export function getSetAction(newValue) {
    return {
        type: SET,
        payload: newValue,
    };
}
import { createStore } from "redux";
import { ADD, SET } from "./actionTypes";
import * as numberAction from "./action";

function reducer(state, action) {
    if (action.type === ADD) {
        return state + 1;
    } else if (action.type === SET) {
        return action.payload;
    }
    return state;
}

const store = createStore(reducer, 10);
store.dispatch(numberAction.getAddAction());
console.log(store.getState()); // 11
store.dispatch(numberAction.getSetAction(3));
console.log(store.getState()); // 3

1.3,bindActionCreators

为了更方便的利用 action creator 来分发 actionredux 提供了 bindActionCreators

它可以创建 action 后自动完成分发。

  • 第1个参数,action creator 的集合。
  • 返回值,一个新的对象,和第1个参数的属性名一致。
import { createStore, bindActionCreators } from "redux";
import * as numberAction from "./action";

// ...

const store = createStore(reducer, 10);
const bindActions = bindActionCreators(numberAction, store.dispatch);

// store.dispatch(numberAction.getAddAction());
bindActions.getAddAction();
// store.dispatch(numberAction.getSetAction(3));
bindActions.getSetAction(3);

下篇文章 Redux-reducer介绍

以上。

标签:const,React,action,import,Redux,type,numberAction,store
From: https://blog.csdn.net/qq_40147756/article/details/140229229

相关文章

  • GOLLIE : ANNOTATION GUIDELINES IMPROVE ZERO-SHOT INFORMATION-EXTRACTION
    文章目录题目摘要引言方法实验消融题目Gollie:注释指南改进零样本信息提取论文地址:https://arxiv.org/abs/2310.03668摘要    大型语言模型(LLM)与指令调优相结合,在泛化到未见过的任务时取得了重大进展。然而,它们在信息提取(IE)方面不太成功,落后于特定任......
  • 使用Java9 Flow API进行Reactive Programming
    importjava.util.concurrent.Flow;importjava.util.concurrent.Flow.Publisher;importjava.util.concurrent.Flow.Subscriber;publicclassReactiveExample{publicstaticvoidmain(String[]args){//创建一个发布者,发布一系列的数字Publisher......
  • react或vue中页面多个echarts,只有最后一个能自适应的处理方法
    页面多个echarts时,自适应绑定方式必须是addEventListenerwindow.addEventListener("resize",()=>{myChart.resize();myChart2.resize();})myChart,myChart2是echart实例   ......
  • 【vueUse库Reactivity模块各函数简介及使用方法--上篇】
    vueUse库是一个专门为Vue打造的工具库,提供了丰富的功能,包括监听页面元素的各种行为以及调用浏览器提供的各种能力等。其中的Browser模块包含了一些实用的函数,以下是这些函数的简介和使用方法:vueUse库Sensors模块各函数简介及使用方法vueUseReactivity函数1.com......
  • 【vueUse库Reactivity模块各函数简介及使用方法--中篇】
    vueUse库是一个专门为Vue打造的工具库,提供了丰富的功能,包括监听页面元素的各种行为以及调用浏览器提供的各种能力等。其中的Browser模块包含了一些实用的函数,以下是这些函数的简介和使用方法:vueUse库Sensors模块各函数简介及使用方法vueUseReactivity函数1.rea......
  • 组合API-reactive函数
      <template><divclass="container"><div>{{obj.name}}</div><div>{{obj.age}}</div><button@click="updateName">修改数据</button></div></template><script......
  • 【React】React18 Hooks 之 useContext
    目录useContext1、Provider和useContext2、Provider和Consumer3、Provider嵌套4、React.createContext提供的Provider和class的contextType属性5、读、写Context(1)父组件修改Context(2)子组件修改Context好书推荐useContext官方地址使用Context深度传递数据通......
  • 使用react物料
    1.win安装node.js2.安装axios报错,进入到C:\ProgramFiles\nodejs\node_modules\npm目录 成功!安装json-servernpminstalljson-server-g   原文:https://ice.work/docs/guide/about  ......
  • 关于事务回滚注解@Transactional
    在使用Spring的@Transactional注解时,有时会出现事务失效的情况。这通常是由于一些常见的配置或使用错误引起的。以下是事务失效的原因和处理方法:常见原因方法可见性@Transactional注解的方法必须是public的。SpringAOP代理只会拦截public方法,非public方法(如private、protect......
  • [email protected](52)[email protected](1)- 核心概念
    目录1,MVC2,前端MVC的困难3,Flux4,Redux1,MVC是一个解决方案,用于降低UI和数据关联的复杂度。在早期前后端未做分离时,服务端会响应一个完整的HTML,包含页面需要的所有数据。而浏览器仅承担渲染页面的作用,整体流程也就是服务端渲染。其中服务端的处理流程:处理请求,并将......