Transaction
transaction(worker: () => void) 可用于批量进行一批更新而不通知观察者,直到事务结束。transaction 只需要一个且无参的worker函数当做参数并运行它。在这个function结束前,不会通知任何观察者。transaction返回其worker函数返回的任何值。注意transaction是完全同步运行的。Transactions可以嵌套使用,但是只有在最外层的transaction完成后,待处理的reaction的才会运行。
import {observable, transaction, autorun} from "mobx";
const numbers = observable([]);
autorun(() => console.log(numbers.length, "numbers!"));
// Prints: '0 numbers!'
transaction(() => {
transaction(() => {
numbers.push(1);
numbers.push(2);
});
numbers.push(3);
});
// Prints: '3 numbers!'