[TOC]
- 1. MobX 介绍
- 2. API概览
- Observable类型
- 4. 理解 MobX 对什么有反应
- 5. 如何(不)使用装饰器
- 资源
- 贴士与技巧
- 实用函数
- 9. 捐赠
- Published with GitBook
8.12. transaction
Transaction(事务)
Transaction 是底层 API,在绝大多数场景下 action 或 runInAction 会是更好的选择
transaction(worker: () => void)
可以用来批量更新,在事务结束前不会通知任何观察者。 transaction
接收一个无参数的 worker
函数作为参数并运行它。 这个函数完成运行前不会通知任何观察者。 transaction
返回 worker
函数返回的任何值。 注意 transaction
完全是同步运行的。 Transactions 可以嵌套。只有在完成最外面的 transaction
后,其他等待的 reaction 才会运行。
import {observable, transaction, autorun} from "mobx";
const numbers = observable([]);
autorun(() => console.log(numbers.length, "numbers!"));
// 输出: '0 numbers!'
transaction(() => {
transaction(() => {
numbers.push(1);
numbers.push(2);
});
numbers.push(3);
});
// 输出: '3 numbers!'