Hello React

一、原生js操作dom

  <ul id="list"></ul>
  <script>
    let personArr=[
      {id: "001",name:"messi",age:18},
      {id: "002",name:"kobe",age:19}
    ];
    let htmlStr="";
    personArr.forEach((person)=>{
      htmlStr+=`<li>${person.name}-${person.age}</li>`;
    })
    document.getElementById("list").innerHTML=htmlStr;
  </script>

二、react实现hello world

  • 第一步:按顺序引入依赖
<!-- 引入react核心库 -->
  <script src="../依赖/react.development.js"></script>
  <!-- 引入raect-dom用于支持raect操作dom -->
  <script src="../依赖/react-dom.development.js"></script>
  <!-- 引入babel 用于将jsx转换为js -->
  <script src="../依赖/babel.min.js"></script>
  • 第二步:将type类型写为babel表示标签内写的是jsx

    <script type="text/babel">

  • 第三步:书写jsx

    • 创建虚拟dom
      const VDOM=<h1>hello,react</h1>;
    • 渲染虚拟dom到页面
      render(要渲染的虚拟DOM,容器),表示要把哪一个虚拟DOM渲染到哪个容器里
      ReactDOM.render(VDOM,document.getElementById("test"));

三、创建虚拟dom的两种方式

  • jsx创建虚拟dom
  <script type="text/babel">
    const VDOM=(
      <h1 id="title">
        <span>hello,react</span>
      </h1>
    );
    ReactDOM.render(VDOM,document.getElementById("test"));
  </script>
  • js创建虚拟dom
  <script>
    //createElement(标签名,标签属性,标签内容)
    const VDOM=React.createElement("h1",{id:"title"},React.createElement("span",{},"hello,react"));
    ReactDOM.render(VDOM,document.getElementById("test"));
  </script>

四、虚拟dom与真实dom

  • 关于虚拟dom
    1.虚拟dom本质是Object类型的对象(一般对象)
    2.虚拟dom比较“轻”,真实dom比较重,因为虚拟dom是react内部再用,无需真实dom上那么多属性
    3.虚拟dom最终会被react转化为真实dom,呈现在页面上
  <div id="test"></div>
  <div id="test2"></div>
  ...
  <script type="text/babel">
    const VDOM=(
      <h1 id="title">
        <span>hello,react</span>
      </h1>
    );
    ReactDOM.render(VDOM,document.getElementById("test"));
    var TDOM=document.getElementById("test2");

    console.log("虚拟dom",VDOM);//虚拟dom Object
    console.log("真实dom",TDOM);//<div id="test2"></div>
    console.log(VDOM instanceof Object);//true
  </script>

执行语句console.log("虚拟dom",VDOM)输出:

虚拟dom

执行语句console.log(VDOM instanceof Object)输出true

执行语句console.log("真实dom",TDOM)输出:

真实dom

五、jsx语法规则

jsx语法规则

  • 定义虚拟DOM时,不要写引号
  • 标签中混入JS表达式时要用{}
  • 样式的类名指定不要用class,要用className
  • 内联样式,要用style={{key:value}}的形式去写
  • 只能写一个根标签
  • 标签必须闭合
  • 标签首字母
    • 若小写字母开头,则将该标签转为html中同名元素,若html中没有改标签对应的同名元素,则报错
    • 若大写字母开头,react就去渲染对应的组件,若组件没有定义,则报错
  <div id="test"></div>

  <script type="text/babel">
    const myId="Dexter";
    const myData="hello,REACT";

    const VDOM=(
      <div>
        <h2 className="title" id={myId.toLowerCase()}>
          <span style={{color:"black",fontSize:"20px"}}>{myData.toLowerCase()}</span>
        </h2>
        <h2 className="title" id={myId.toUpperCase()}>
          <span style={{color:"blue",fontSize:"20px"}}>{myData.toLowerCase()}</span>
        </h2>
        <input type="text"/>
      </div>
    );
    ReactDOM.render(VDOM,document.getElementById("test"));
  </script>
  <script type="text/babel">
    const data=["Angular","React","Vue"];

      const VDOM=(
        <div>
          <h1>前端js框架列表</h1>
          <ul>
            {
              data.map((item,index)=>{
                return <li key={index}>{item}</li>
              })
            } 
          </ul>  
        </div>
      );
  <script/>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • React,用于构建用户界面的 JavaScript 库,是Facebook公司的开源项目,用于开发单页面应用; ...
    hellomyshadow阅读 264评论 0 0
  • 课前提醒 学习这个课程需要具备这样的基础:-- HTML、CSS、JavaScript(ES6以上) 上课时间:-...
    JackLeeVip阅读 827评论 0 4
  • Q1:什么是虚拟DOM? 难度::star: 虚拟DOM(VDOM)它是真实DOM的内存表示,一种编程概念,一种模...
    陈二狗想吃肉阅读 456评论 0 1
  • 目录: JS在Web端的简单应用 类比JS,React的作用 React 的组件、虚拟DOM、组件的render方...
    七月_3155阅读 237评论 0 1
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 126,054评论 2 7