理解mobx @computed、autorun、get函数
第一篇博客记录一下刚工作时思考的问题。
1.首先看第一个例子:
const number = observable(10);
const plus = computed(() => number.get() > 0);autorun(() => {console.log(plus.get());
});
// true
number.set(-19);//false
number.set(-1);
number.set(1);//true
(1) autorun 和 @computed 都会根据所观察的变量发生变化的时候触发
(2) @computed所计算得到的新值可以observable
2. 第二个例子
class Test {@observable firstName = 'first'@observable lastName = 'last'@computedget fullName () {return `${this.firstName} ${this.lastName}`}getFullName () {return `${this.firstName} ${this.lastName}`}
}const test = new Test()
autorun(() => {console.log('computed:', test.fullName)
})autorun(() => {console.log('getter:', test.getFullName())
})// computed: first last
// getter: first lasttest.firstName = 'salmon'
// computed: salmon last
// getter: salmon lasttest.lastName = 'sushi'
// computed: salmon sushi
// getter: salmon sushitest.firstName = 'salmon'
// 无输出
test.getFullName();
// salmon sushi
当变量没有发生变化时是不会触发autorun 和 @computed
虽然普通的get函数能与autorun配合达到与@computed相同的效果,但是有两个特点:
(1)无法产生新的可observable的值
(2)可以直接调用
mobx的@computed跟vue的computed属性类似
参考链接:
https://blog.csdn.net/cqm1994617/article/details/53271494
https://github.com/mobxjs/mobx/issues/161
理解mobx @computed、autorun、get函数相关推荐
- mobx 的autorun和reaction使用,监听mobx值变化
mobx 的autorun和使用: Mobx中的衍生----动作(autorun.reaction) (1)autorun 当你想创建一个永远不会被观察的响应式函数时,可以使用autorun. 当au ...
- 理解javascript中的回调函数(callback)【转】
在JavaScrip中,function是内置的类对象,也就是说它是一种类型的对象,可以和其它String.Array.Number.Object类的对象一样用于内置对象的管理.因为function实 ...
- java继承类型转换_#java 一个简单的例子理解java继承、成员函数重写、类型转换...
一个简单的例子理解java继承.成员函数重写.类型转换 1.继承简介 举一个简单的例子:笔分为很多种,比如毛笔.钢笔.圆珠笔等等,这些笔都有一些相同的属性比如长度.笔迹的粗细等等:但他们也有不同的特点 ...
- php自带count 函数,深入理解PHP 数组之count 函数
count() PHP count() 函数用于计算数组中的单元数目或对象中的属性个数,返回数组的单元个数或对象中的属性个数. 语法: int count( mixed var [, int mode ...
- 【react】---函数化编程的理解,柯里化函数及返柯里化函数的理解...
虚拟DOM 与 js概念的理解 01.纯函数的理解: 02.柯里化函数 编写一个函数add(3)(4)(5) 得出结果 12 //通过柯里化 函数就可以实现 一个函数内,执行过程中,返回 ...
- Debug Hacks (1): 理解用GOT/PLT调用函数的原理
Debug Hacks (1): 理解用GOT/PLT调用函数的原理 1. GOT/PLT GOT是Global Offset Table,是保存库函数地址的区域.程序运行时,库函数的地址会设置到GO ...
- 正确理解scipy中的coo_matrix函数
正确理解scipy中的coo_matrix函数 1. 构造一个空矩阵 2. 使用ijv(triplet)格式构造一个矩阵 3. 用重复的索引构造矩阵 1. 构造一个空矩阵 这种用法比较简单,直接生成一 ...
- 理解javascript中的回调函数(callback)
理解javascript中的回调函数(callback) 在JavaScrip中,function是内置的类对象,也就是说它是一种类型的对象,可以和其它String.Array.Number.Obje ...
- 理解Underscore中的uniq函数
uniq函数,是Underscore中的一个数组去重函数,给它传递一个数组,它将会返回该数组的去重副本. 1 ES6版本去重 在ES6版本中,引入了一个新的数据结构--set,这是一种类似数组的数据结 ...
最新文章
- 深度学习中的随机梯度下降(SGD)简介
- 2018秋寒假作业4—PTA编程总结1
- 【转载】10个最“优秀”的代码注释
- mean项目的分模块开发
- NGUI EventDelagate事件委托
- Taro+react开发(70):flex布局
- aix oracle 10.2.0.1 升级 10.2.0.4,AIX Oracle RAC 升级到10.2.0.4.0要特别注意的问题 - 爱肯的专栏 ......
- php自动生产静态页
- 写不出满分作文怎么办,GPT-3 来帮你
- Linux的学习之路grep命令
- C++中struct和class的区别 [zz]
- 浪曦_Struts2应用开发系列_第2讲.Struts2的类型转换-学习笔记
- 内网环境下element-template配置element-admin
- html网页设计小作业(个人主页)
- 重装系统后电脑耳机插前面没有声音输出怎么办?
- 一年讲50本书,年收入过亿,罗振宇没做到的,樊登读书会凭什么?
- 关于K8s中Pod调度[选择器,指定节点,主机亲和性]方式和节点[coedon,drain,taint]标记的Demo
- 用python写一个贪吃蛇小游戏
- ICASSP 2023 | 解密实时通话中基于 AI 的一些语音增强技术
- 数据结构与算法 张铭 教材源代码