我该如何强制重新渲染带亮元素的孙子?

时间:2019-05-23 09:19:22

标签: lit-element lit-html

我具有以下结构

<my-app>
   <my-modal> <!-- 
     <my-form></my-form>
   </my-modal>
</my-app>

my-modal被设计为通用包装器,我使用它来包装应用程序中的许多不同对话框。在其中,我听位置更改,然后render html '<slot></slot>'

我的问题是,尽管my-modal通过显示和隐藏表单而表现正确,但是表单本身从未重新呈现,因此总是显示陈旧的内容。我目前正在使用IntersectionObserver整理一些东西,以使其在可见时触发,但这感觉确实很棘手,并且会引起其他问题。

有一种方法可以使我的模态强制其子级重新渲染,即使它知道的唯一子级是<slot></slot>。我不希望my-appmy-modal的行为一无所知。

1 个答案:

答案 0 :(得分:1)

可能不适合

  

我不希望我的应用程序了解我的模态的行为

但是您可以在requestFullUpdate上添加一个函数my-modal,然后对所有子项进行迭代,并对所有子项进行requestUpdate。可以在开/关左右完成,甚至间隔一个时间:p

但是,我有一种感觉,这可以解决不适合的结构带来的“副作用” ...也许尝试从不同的角度看待它-也许像这样吗? https://stackoverflow.com/a/56297264/3227915