javascript - 如何为反应组件添加优先级?
问题描述
我希望我的 Home 组件先加载,然后再加载其他所有内容?我怎样才能做到这一点?
或者我可以在显示微调器时在后台加载资源,然后显示整个页面?像这样的东西。。
useEffect(() => {
setTimeout(() => {
setIsLoading(false);
}, 2500);
}, []);
return isLoading ? (
<Spinner />
) : (
<div className="App">WholePage</div>
解决方案
What I would do is use the useEffect hook for the priority component that you want to load first and set a state in there to load the remaining components.
My code would look something like this:
function App(){
const [homeLoaded,setHomeLoaded] = useState(false)
const getHomeLoaded = (homeLoaded) => {
setHomeLoaded(homeLoaded)
}
return(
<>
<Home gethomeLoaded = {getHomeLoaded}/>
{homeLoaded ? <OtherComponents>:null}
</>
)
}
The home component would look something like this:
function Home(){
useEffect(() => {
props.getHomeLoaded(true)
}, []);
return(
<div>Your home content goes here</div>
)
}
What I am essentially doing is passing a state to the parent component from Home so that I can set homeLoaded to true only after Home component is loaded
推荐阅读
- laravel - 在 laravel 中使用错误的 ttp 请求类型(例如 get 而不是 post)时返回 404
- excel - 根据今天的日期和特定时间范围过滤数据
- python - 可调用的python字典
- c# - 这是一种已知的二进制格式,还是自制的?
- javascript - 如何替换除引号之外的所有非 ASCII 字符?
- go - JSON 响应附加到 HTML 模板输出
- c# - 奇怪的函数__Boxed
用于反编译后的装箱和拆箱 - r - 如何绘制 lmer 模型的一些项
- typescript - 什么是打字稿中 React.ChildrenArray 的正确替代品?
- jquery - 剑道网格在更新时获得完整的网址