栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

React中的dom ready事件

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

React中的dom ready事件

TL; DR 如果我正确理解,答案可能是“不可能”。但是还有另一种解决方案…

这是我认为您要尝试执行的操作,描述为一系列步骤:

  1. 页面开始加载,

    <Loader />
    组件显示“页面加载”动画

  2. 页面完成加载,

    <Loader />
    删除组件(或隐藏
    <Page />
    组件),并使用“真实”页面内容插入(或显示)组件。

问题出在这里:请记住,您是将React组件像这样注入到页面中的:

ReactDOM.render(<Wrapper />, document.getElementById('app'));

在加载DOM之前,您实际上无法注入React组件。因此,到那时,要么

<Loader/>
出现大约2毫秒然后消失,要么根本不出现(因为DOM在注入页面时已经被加载了)。

如果您尝试显示动感或其他简单动画(例如动画GIF),则可以尝试使用混合方法:

像这样设置您的HTML:

<body>    <div id="app"><img src="throbber.gif" /></div></body>

在您的脚本标签中,包括一个JQuery“文档就绪”事件处理程序以加载React组件:

class Page extends Component {}class Wrapper extends Component {    render() {        return ( <Page />        );    }}$(document).ready(function () {    ReactDOM.render(<Wrapper />, document.getElementById('app'));});

请注意,我已经省略了

<Loader />
-抖动图像正在完成加载程序的工作。

这里的想法是,当页面加载时,动荡的GIF将会动摇起来,直到加载DOM,这时将触发JQuery的document ready事件并

div#app
替换内容。

我还没有尝试过,但是它 应该可以 工作,只要React实际上 替换
了的内容

div#app
,而不仅仅是在其上添加内容。如果不是这种情况,那么只需将文档就绪处理程序更改为以下内容即可:

$(document).ready(function () {    $('div#app img').remove();    ReactDOM.render(<Wrapper />, document.getElementById('app'));});


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/485119.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号