Javascript 在React.js的功能组件中首次呈现之前调用api
如果我想在第一次呈现组件后调用API,我知道我们有Javascript 在React.js的功能组件中首次呈现之前调用api,javascript,reactjs,react-hooks,react-functional-component,react-lifecycle,Javascript,Reactjs,React Hooks,React Functional Component,React Lifecycle,如果我想在第一次呈现组件后调用API,我知道我们有useffecthook来调用API方法。(我说的只是功能组件,没有类组件) 有没有办法,我可以在我的组件第一次呈现之前调用API 这个问题的原因是,如果某个UI部分依赖于API,我也不想在第一次渲染时向用户显示任何不完整的信息,一旦我从API获取数据,这些信息将被更改。 这似乎是一个糟糕的UI体验 编辑:我得到了一些建议,可以使用useLayoutEffect或任何耗材标志来检查它是否被渲染。我已经检查过useLayoutEffect不起作用,
useffect
hook来调用API方法。(我说的只是功能组件,没有类组件)
有没有办法,我可以在我的组件第一次呈现之前调用API
这个问题的原因是,如果某个UI部分依赖于API,我也不想在第一次渲染时向用户显示任何不完整的信息,一旦我从API获取数据,这些信息将被更改。
这似乎是一个糟糕的UI体验
编辑:我得到了一些建议,可以使用useLayoutEffect或任何耗材标志来检查它是否被渲染。我已经检查过useLayoutEffect不起作用,通过使用耗材标志,我们只是增加了复杂性
我们有更好的方法吗?我认为可以通过传入一个空数组作为第二个参数来用于类似的事情<代码>使用布局效果(()=>{…},[])代码>
在浏览器有机会绘制之前,useLayoutEffect中计划的更新将同步刷新
尽管您始终可以在父组件中获取数据并将其作为道具传递。或者,如果您不介意它现在只是一个实验性的功能,那么它正试图解决这个确切的问题。在从同一组件呈现组件之前,没有正确的方法进行API调用 当且仅当具有可消耗数据时,您可能会首选在父组件和呈现呈现组件中进行API调用
这种情况下的另一个解决方法是在组件内保留
耗材
标志,在useffect
内发出请求,不渲染任何内容或某种类型的加载程序,仅在请求成功完成时才渲染内容。“在浏览器有机会绘制之前”,但不在组件之前rendered@Kyr没错,我编辑了我的答案以提供替代方案methods@Nimishgoel你说得对。但是,没有内置的钩子。甚至componentWillMount
也不推荐使用。您可以编写如下自定义钩子:,或使用两个备选钩子之一options@Kyr组件渲染意味着什么?我以为这是渲染时,它是光栅化的GPU和画在屏幕上screen@duhaime,我认为react上下文中的“render”可以被视为从虚拟DOM的组件(render函数)更新部分返回,正确吗?由于渲染之前和渲染之后相隔毫秒,那么您认为渲染之前和渲染之后会有什么不同?在这两种情况下,都必须渲染某些内容(如加载)。