gpt4 book ai didi

javascript - 差异,当可观察变量在 mobx 中的 Action 方法和普通函数内更新时?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:25:45 26 4
gpt4 key购买 nike

我正在使用 MBOXReactJS 中进行状态管理。

我有时会在某些函数中更新可观察变量,然后它也会重新渲染 react 组件,有时我会使用 @action 方法来更新可观察变量。

那么这两种场景有什么区别,对渲染有什么影响呢?

最佳答案

一个 action 也是一个 transaction,这意味着从您在 action 中更改的 observables 派生的任何值都将在 action 完成。如果您不将函数包装在 action 中,派生值可能会计算多次。

示例 - 操作后重新计算 ( JS Bin )

@observer
class App extends Component {
@observable x = 'a';
@observable y = 'b';
@computed get z() {
console.log('computing z...');
return `${this.x} ${this.y}`;
}

onClick = action(() => {
this.x = 'c';
this.y = 'd';
});

render() {
return <div onClick={this.onClick}> {this.z} </div>;
}
}

示例 - 立即重新计算 ( JS Bin )

@observer
class App extends Component {
@observable x = 'a';
@observable y = 'b';
@computed get z() {
console.log('computing z...');
return `${this.x} ${this.y}`;
}

onClick = () => {
this.x = 'c';
this.y = 'd';
};

render() {
return <div onClick={this.onClick}> {this.z} </div>;
}
}

关于javascript - 差异,当可观察变量在 mobx 中的 Action 方法和普通函数内更新时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44298936/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com