gpt4 book ai didi

javascript - 当整个 React dom 树加载完毕后采取行动

转载 作者:行者123 更新时间:2023-12-03 00:12:07 26 4
gpt4 key购买 nike

当整个 React DOM 树加载完毕后,如何触发一个操作?就像知道 child 的 sibling 何时加载一样。我相信容器组件的 componentDidUpdate 仅应在完全渲染时触发(如其子组件已渲染),但我发现情况并非如此。

例如:

class ParentContainer extends Component {

componentDidUpdate() {
// all of the children should be rendered by now?
const { section } = this.props
const scrollToEl = document.getElementById(section)
if (scrollToEl) {
scrollToEl.scrollIntoView({block: 'start', behavior: 'smooth'})
}
}

render() {
return (
<div>
<SiblingWithChildren1 />
<SiblingWithChildren2 />
<Child1>
<Child2>
array.map(comp =>
<Section id={comp.id} />
)
</Child2>
</Child1>
</div>
)
}
}

在这种情况下,文档开始滚动到可能与 Section id 匹配的元素。

但是,滚动时间很短,因为所有内容都还没有在 DOM 中完全渲染,即使只有几毫秒。如果 SiblingWithChildren 组件尚未完全加载,则会影响文档的高度。

使用 setTimeout 似乎很脆弱。

最佳答案

componentDidUpdate 仅在更新时触发。

在初始加载时,您需要 componentDidMount

React 组件生命周期的文档位于 https://reactjs.org/docs/react-component.html .

关于javascript - 当整个 React dom 树加载完毕后采取行动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54680663/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com