【发布时间】:2022-01-01 06:48:04
【问题描述】:
在此示例中,对象上的方法和函数似乎都以相同的方式修改对象的属性,都使用赋值。但只有函数调用会触发重新渲染。为什么会这样,有没有办法修改该方法,以便它也触发重新渲染? (不将物业转换为商店)
->REPL
<script>
class N {
constructor() {
this.numbers = [1,2,3]
}
add(newN) {
this.numbers = [...this.numbers, newN]
console.log('numbers >', this.numbers)
}
}
const numObj = new N()
function add(newN) {
numObj.numbers = [...numObj.numbers, newN]
console.log('numbers >', numObj.numbers)
}
</script>
{#each numObj.numbers as n}
{n}
{/each}
<br><br>
<button on:click={_=> numObj.add(4)}>
add number
</button>
via 'object method'<br>
<button on:click={_=> add(4)}>
add number
</button>
via 'component function'<br>
【问题讨论】: