1

我有一个带有 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 修饰。但是,当我在非反应性属性的输入文本中键入内容时,它仍会呈现在屏幕上,这在我更改反应性属性的输入文本中的值之前不会发生。

4

2 回答 2

2

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

于 2021-01-03T10:07:24.447 回答
0

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

于 2020-07-23T18:01:35.553 回答