在React中有一个setState
API,我们可以提供一个只在render
完成时才会调用的回调。这种保证在我的场景中非常有用,因为我需要根据本机DOM做一些事情。不要告诉我利用本机DOM是不好的做法,有一些API没有提供,例如getBoundingClientRect
。当getBoundingClientRect
完成肯定
render
就redux而言,setState
被隐藏起来,所以我无法得到这样的保证。
我尝试了一个似乎得到我想要的解决方案
thunkedAction().then(()=>{
somethingShouldAfterRender()
})
尽管thunkedAction
最初是同步的,但我故意将它们设为异步,因为我需要回调。我天真地假设在render
完成时调用回调并且它似乎是真的
任何人都可以确认这个想法或提供另一种解决方案吗?
答案 0 :(得分:0)
like componentWillMount() 有一个回调 componentDidMount(),它将在第一次完成渲染后调用。因为在此之后将调用 componentDidUpdate()来更新组件的状态,从而导致渲染差异。
因此,如果你想在第一次调用render之后想要doSomthing(),你可以将doSomething()放在componentDidMount()中。但是如果你想在每次调用render()之后都这样做,你可以在两个回调中放入doSomething()。