我怎样才能强制重新渲染一个点燃元素的孙子?
How can I force a re-render of a lit-element grandchild?
我有以下结构
<my-app>
<my-modal> <!--
<my-form></my-form>
</my-modal>
</my-app>
my-modal
被设计为通用包装器,我用它来包装我的应用程序中的许多不同对话。我在其中监听位置变化,render html '<slot></slot>'
我的问题是,尽管 my-modal
通过显示和隐藏表单表现正确,但表单本身永远不会重新呈现,因此总是显示陈旧的内容。我目前正在拼凑一些使用 IntersectionObserver
在可见时触发的东西,但这感觉真的很笨拙并且会导致其他问题。
有没有办法让 my-modal 强制其子项重新渲染,即使它知道的唯一子项是 <slot></slot>
。我不想 my-app
知道任何关于 my-modal
的行为。
可能不适合
I don't want my-app to know anything about my-modal's behaviours
但您可以将函数 requestFullUpdate
添加到 my-modal
,然后迭代所有子项并为所有子项执行 requestUpdate
。可以在 open/close 左右完成...甚至可以间隔 :p
但是,我有一种感觉,这只是从不合适的结构中治愈了 "side effect"...也许尝试从不同的角度来看待它 - 也许是这样的?
我有以下结构
<my-app>
<my-modal> <!--
<my-form></my-form>
</my-modal>
</my-app>
my-modal
被设计为通用包装器,我用它来包装我的应用程序中的许多不同对话。我在其中监听位置变化,render html '<slot></slot>'
我的问题是,尽管 my-modal
通过显示和隐藏表单表现正确,但表单本身永远不会重新呈现,因此总是显示陈旧的内容。我目前正在拼凑一些使用 IntersectionObserver
在可见时触发的东西,但这感觉真的很笨拙并且会导致其他问题。
有没有办法让 my-modal 强制其子项重新渲染,即使它知道的唯一子项是 <slot></slot>
。我不想 my-app
知道任何关于 my-modal
的行为。
可能不适合
I don't want my-app to know anything about my-modal's behaviours
但您可以将函数 requestFullUpdate
添加到 my-modal
,然后迭代所有子项并为所有子项执行 requestUpdate
。可以在 open/close 左右完成...甚至可以间隔 :p
但是,我有一种感觉,这只是从不合适的结构中治愈了 "side effect"...也许尝试从不同的角度来看待它 - 也许是这样的?