在页面中使用React及render的注意事项

1.React的特点

高性能:虚拟DOM(Virtual DOM)配合 diff 算法,最大限度地减少与 DOM 的交互。

声明式:React采用声明式编码UI,可以轻松实现交互式UI,让代码更加可行且方便调试。

组件化:通过 React 构建组件,使得代码更加容易得到复用,能够高效率的应用在大项目的开发中。

单向响应的数据流:React 中的数据是单向自顶向下传递的,父组件数据的更新会自动传递到子组件,但子组件的数据更新不会影响到父组件,也不能在子组件修改父组件传入的数据

JSX扩展:JSX 是 JavaScript 语法的扩展。React 开发不一定使用 JSX ,但官网建议使用它。

灵活:React可以与已知的库或框架很好的进行配合。

2.在页面中使用React

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <!--    1.引入react核心库文件-->
    <script src="../lib/react.development.js"></script>
    <!--    2.引入react-DOM用于操作DOM,
            react-DOM依赖于react核心库,所以必须在其后面引入
    -->
    <script src="../lib/react-dom.development.js"></script>
</head>
<body>
<!--3.创建React的根元素(DOM节点),也被成为react的根容器,后续的ReactDOM操作都在其中完成-->
<div id="root"></div>

<script>
    /*
     * 4.需要通过ReactDOM.createRoot()来创建React的根容器
     *  ReactDOM来自于react-dom.development.js
     *  createRoot()接收一个DOM元素,可以将这个元素作为React的根容器
     * **/
    const root = ReactDOM.createRoot(document.querySelector('#root'))
    // root是创建好的根容器,该容器是一个对象,可以通过该对象提供的render方法,呈现指定的内容
    // render方法接收的内容既是放在容器中的内容
    root.render('你现在过的怎么样')
</script>
</body>
</html>

3.render的注意事项

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="../lib/react.development.js"></script>
    <script src="../lib/react-dom.development.js"></script>
</head>
<body>
<div id="root"></div>
<div class="my"></div>

<script>
    {
        // react挂载位置,在同一个页面中可以挂载多个
        // 1.将指定内容渲染到指定位置
        // const root1 = ReactDOM.createRoot(document.querySelector('#root')) // 指定挂载位置
        // root1.render("我是挂载到ID为root")
        //
        // const root2 = ReactDOM.createRoot(document.querySelector('.my')) // 指定挂载位置
        // root2.render("我是挂载到类名为my")
    }
    {
        // render可以调用多次,最后一次指定的内容会把上一次的覆盖
        // const root1 = ReactDOM.createRoot(document.querySelector('#root')) // 指定挂载位置
        // root1.render("我是挂载到ID为root")
        // root1.render("我是挂载到ID为root,我会把前面的覆盖")
    }
    {
        // 同一个DOM元素,只能被ReactDOM.createRoot()指定一次,否则会出现警告
        // const root1 = ReactDOM.createRoot(document.querySelector('#root')) // 指定挂载位置
        // root1.render("我是挂载到ID为root1")
        // const root2 = ReactDOM.createRoot(document.querySelector('#root')) // 指定挂载位置
        // root2.render("我是挂载到ID为root2")
    }
    {
        // 不要将body和html作为挂载的位置
        // 1-不要将body作为React容器,因为body的子项经常被第三方脚本和浏览器插件使用
        // const root = ReactDOM.createRoot(document.body)
        // root.render("body作为挂载容器")

        // 1-不要将html作为React容器,这样会覆盖其他项
        // const root1 = ReactDOM.createRoot(document.documentElement)
        // root1.render("html作为挂载容器")
    }
    {
        // 如果指定的字符串中包含HTML标签,浏览器不会识别
        const root = ReactDOM.createRoot(document.querySelector('#root'))
        root.render('<H1>我现在很好!</H1>')
    }
</script>
</body>
</html>

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值