Skip to content

saveScrollPosition 设置为 'screen' 遍历所有节点,且查找节点宽高性能成本较高 #355

@youngBrain1893

Description

@youngBrain1893

问题:当前实现传递 saveScrollPosition 配置后会在 eject 阶段 KeepAlive.js#L111 进行初次查找目标节点 TARGET_1,而后进行目标节点的所有子节点遍历 saveScrollPosition.js#L31
对于保留 document.scrollingElement.body 滚动的场景导致所有节点发生遍历,且计算宽高,性能开销过大

潜在解法:
由使用方指定在 saveScrollPosition 时是否需要进行 querySelector('*') 的子节点遍历操作
方案一:添加额外配置项 saveScrollChildrenPosition: boolean

  • 默认为当前实现(遍历子节点)
  • 设置为 false,仅对 TARGET_1 的节点进行滚动位置保留(不继续遍历子节点)

方案二:调整 saveScrollPosition 类型 Array<string | boolean | [string, boolean?] | [boolean, boolean?]>
可对每一个节点控制是否进行子节点查询

(如果可行后续可提交 PR)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions