redux入门 互动版

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

action

本小节我们将了解到action的概念

1、什么是action

action翻译成中文也就是'行为',redux中的action也是行为,这个行为被数据化成一个有一个type字段来标识 JavaScript 普通对象,这个字段记录了用户行为的数据(当然也有服务器响应的数据),具体是怎样,我们通过下图来看。

img

我们可以看到,当我点击按钮的时候,一个action就产生了,这个action里面包含什么呢?

A.一定包含一个type字段来告诉redux我们要添加一个任务

B.一定包含一个内容字段(在后面我们给他取名为text,当然你可以使用其他什么名称)来记录我们添加了什么任务

2、action的概念

想必大家看完什么是action也对action有了一定概念,通俗一点来说,就是记录了用户行为数据(也有服务器响应的数据)的载体(对象),他和普通js对象唯一不同的一点就是,一定要有一个type字段来告诉redux我们的action类型(是要添加任务,还是记录完成任务...)

注意: action是 store 数据的唯一来源

3、action定义

看到上面标红的大字,咋们就知道,对待action,不能马虎,作为唯一的数据来源,原则很重要。

A.必须强调action是一个JavaScript对象.

B.action内有一个type字段

C.action通常被定义为字符串常量

D.应该尽量减少在 action 中传递的数据,例如

//传递整个todos
{
    type: COMPLETE_TODO,
    todos:[]
}
//传递索引
{
  type: COMPLETE_TODO,
  index: 5
}

4、设计todo所需action

我们可以想想使用todo时能哪些行为呢?

一、如上图所说的添加任务

二、标记完成任务

img

三、选择要显示的任务

img

var actionAddTodo = {
  type:'ADD_TODO',
  text:'吃饭'
};
var actionCompleteTodo = {
  type:'COMPLETE_TODO',
  index:2
};
var actionSelectFilter = {
  type:'SETFILTER',
  filter:'SHOW_ALL'
};
在代码框中中完成actionSelectFilter的设计