Lightning Web 组件反应性和非反应性属性

Lightning Web Component Reactive and Non Reactive Properties

我有一个带有 2 个私有属性的 Lightning Web 组件。一个 属性 通过轨道反应,第二个是非反应(未装饰)。

这是 HTML 文件:

<template>
    <table style="background: white;">
        <tr>
            <td>
                Reactive Private Property:
                <lightning-input type="text" onchange={reactiveHandler}></lightning-input>
                Value: {reactiveProperty}
            </td>
        </tr>
        <tr>
            <td>
                Nont-Reactive Private Property:
                <lightning-input type="text" onchange={nonReactiveHandler}></lightning-input>
                Value: {nonReactiveProperty}
            </td>
        </tr>
    </table>
</template>

这是 JS 文件:

import { LightningElement, track } from 'lwc';

export default class ReactiveAndNonReactiveProperties extends LightningElement {
  @track reactiveProperty;
  nonReactiveProperty;

  reactiveHandler(event) {
    this.reactiveProperty = event.target.value;
  }

  nonReactiveHandler(event) {
    this.nonReactiveProperty = event.target.value;
  }
}

如您所见,只有一个 属性 用@track 装饰。但是,当我在非响应式 属性 的输入文本中键入内容时,它仍会呈现在屏幕上,除非我更改响应式 属性 的输入文本中的值,否则不会发生这种情况.

根据 Spring'20 版本,默认情况下所有属性都是反应性的。即使你不使用 "track" ,它也会呈现在屏幕上。

更正提供的答案:根据 Spring'20 版本,默认情况下所有原始属性都是反应式的,但是,如果 属性 持有的值是数组或对象,则您需要使用@track 装饰器

指定属性 反应式