У меня есть простой элемент lit со свойством, которое имеет функцию hasChanged
.
<html>
<head>
<meta charset="utf-8" />
</head>
<body>
<script type="module">
import {LitElement, html} from 'https://unpkg.com/@polymer/lit-element@0.7.0/lit-element.js?module';
class MyElement extends LitElement {
static get properties() {
return {
mood: {
type: String,
hasChanged: function(value, oldValue) {
console.log(oldValue, " -> ", value);
return BOOLEAN; // <== replace with true or false
}
}
};
}
constructor() {
super();
this.mood = 'default';
}
render() {
return html`${this.mood}`;
}
}
customElements.define('my-element', MyElement);
</script>
<my-element mood="explicit"></my-element>
</body>
</html>
Для отображаемого результата не имеет значения, заменяете ли вы BOOLEAN
на true
или false
. Оба показывают explicit
.
Но выходы журнала отличаются:
- с
true
вы получите только одну строку:
undefined -> default
- с
false
вы получите две строки:
undefined -> default
default -> explicit
Вывод журнала 'false
' - это то, что я ожидал. С lit-element до 0.6.5 вы получаете те же две строки и возвращая true
.
Это ошибка, появившаяся в lit-element 0.7.0 или новое поведение корректно? И если он действителен, почему второй вызов не выполняется путем возврата true
из первого вызова.