живой пример
В основном:
Я помещаю дочерний компонент внутри родительского html.
Дочерний компонент имеет свойство title
внутри объекта static get properties()
.
В родительском компоненте я присваиваю свойство title
дочернего компонента частной переменной, которой нет в static get properties()
объекта родительский компонент.
Позже, в setTimeout
внутри родительского компонента, я изменяю значение закрытой переменной.
Дочерний Компонент не выполняет повторную визуализацию.
//inside parent component
render(){
return html`
<child-component title="${this._privateVariable}"></child-component>
`
}
constructor(){
super();
this._privateVariable = 'lore ipsum'
setTimeout(()=>{
this._privateVariable = '123455667'
}, 10000)
}
Теперь я знаю, что если я добавлю _privateVariable
в static get properties()
родительского компонента, дочерняя структура выполнит повторную визуализацию. , но это потому, что весь родительский объект выполняет повторную визуализацию.
После подключения к DOM дочерний компонент отслеживает свое свойство title, поэтому он должен понимать, что назначенное ему значение изменилось, и выполнить повторную визуализацию.
Я не понимаю, почему мне нужно перерисовать весь родительский элемент, чтобы перерисовать ребенка.
Использование консоли разработчика и доступ к компоненту в DOM:
Если я изменю свойство дочернего компонента с помощью javascript, дочерний объект будет отрисовываться совершенно нормально, без необходимости перерисовать весь родительский элемент.
Если я отредактирую дочерний компонент html и вручную изменю атрибут, дочерний объект будет отрисовываться совершенно нормально, без необходимости повторной визуализации весь родительский элемент.
Что мне здесь не хватает?