gpt4 book ai didi

javascript - 有没有办法在 marko js 小部件中多次设置状态?

转载 作者:行者123 更新时间:2023-11-30 15:50:00 25 4
gpt4 key购买 nike

我在点击按钮时设置状态。
即 this.setState('array', array);

在第一个 setState 上,它会影响前端。但是当我将更多值插入数组并尝试再次将状态设置为不影响状态和前端时。

有什么办法可以一遍又一遍的setState,重新渲染页面

最佳答案

Marko Widgets仅在新状态和旧状态之间进行浅比较,以确定是否需要重新呈现 UI 组件。也就是说,Marko Widgets 不会对数组进行深度比较以确定新数组是否有新元素或不同元素。出于性能原因进行浅表比较,因为对作为 UI 组件状态一部分的每个属性进行深度比较通常在计算上过于昂贵。

解决方案一

推荐的策略是将添加到状态的对象视为不可变的。也就是说,不是改变旧数组,而是创建一个包含附加元素的新数组:

坏的:

var myArray = this.state.myArray;
myArray.push('foo');
this.setState('myArray', myArray); // No change since myArray === this.state.myArray

好:

var myArray = this.state.myArray;
myArray = myArray.concat('foo'); // myArray !== this.state.myArray
this.setState('myArray', myArray);

方案二

另一种选择是在改变数组后调用 this.setStateDirty('myArray'):

var myArray = this.state.myArray;
myArray.push('foo');
this.setStateDirty('myArray'); // Mark the object as being modified

更多信息:

关于javascript - 有没有办法在 marko js 小部件中多次设置状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39525422/

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