svelte - 仅在 Svelte 子节点全部更新后操作 DOM
问题描述
我有一个 Svelte 组件,#each
它对其子组件执行操作。但是,在所有子项都更新后,我希望父项调整子项的位置以与他们引用的内容对齐。(想想:谷歌文档中的评论。)当孩子渲染时,孩子不可能知道自己的位置,因为我需要处理重叠:如果两个子组件引用相同的内容,我需要将它们垂直展开,所以它们是可读的。这需要家长处理。有没有首选的方法来处理这样的事情?我在想子组件可以将它们的 DOM 节点注册到父组件onMount
,并且父组件可以在其afterUpdate
. 想法?
这是一个粗略的香草 DOM/JavaScript 演示,有点说明我正在尝试做的事情。
解决方案
您可以使用数据绑定,而不是与父节点共享 DOM 节点。
“内容”组件可以offsetTop
与父组件共享。“评论组”组件将共享它的height
.
然后父级将拥有计算每个“评论组”偏移量所需的数据。
父母需要决定对齐方式应该是垂直中间还是垂直顶部(如果之前的“评论组”的高度大于它所引用的内容,您可能需要对齐到垂直顶部)
推荐阅读
- json - 您在哪里为 Parse Server 插入指针权限 Json?
- visual-studio-code - 为什么没有亮点?
- javascript - React Redux 未处理拒绝(TypeError):无法读取未定义的属性“then”
- python - 无限循环,直到三个条件之一为真。Python
- tensorflow - TensorFlow 对象检测 API 分类损失增加
- python - 从数据透视表 pandas 中提取较小的表
- java - JComboBox 程序不会加载
- scala - 断言异常时如何知道何时在ScalaTest Matchers中使用`a`、`an`或`the`?
- ember.js - Ember-cli 忽略选项 .babelrc
- python - Pygame 窗口未在 macOS Catalina 上显示