• React-2 JSX知识


    目录

    一、JSX语法

    1、定义虚拟dom时不要用引号

    2、标签中引入js表达式要用{}

    3、如果在jsx要写行内样式需要使用style={{color:red}}样式

    4、样式的类名指定不能写class,要写className

    5、只有一个根标签

    6、标签必须闭合

    7、标签首字母

    二、基本使用

    1、createElement方法:过于繁琐不建议使用

    2、JSX方法:

    三、JSX中使用JS表达式

    四、条件渲染

    五、列表渲染

    六、样式处理

    1、行内样式style

    2、类名 className(推荐)      


    一、JSX语法

    1、定义虚拟dom时不要用引号

    2、标签中引入js表达式要用{}

    3、如果在jsx要写行内样式需要使用style={{color:red}}样式

    4、样式的类名指定不能写class,要写className

    5、只有一个根标签

    6、标签必须闭合

    7、标签首字母

    (1)若小写字母开头,则会将该标签转为html同名标签,如果没找到,则会报错;
    (2)若大写字母开头,则会认为是组件,它就会去找对应的组件,如果没找到,就会报组件未定义的错误;

    注意:jsx的样式命名采用驼峰命名法,如果为两个单词,第二个单词的首字母要大写

    二、基本使用

    1、createElement方法:过于繁琐不建议使用

    1. React.createElement("div",{id:"d1",className:"item"}
    2.                                  React.createElement("ul",null
    3.                                  React.createElement("li",null,"ok"),
    4.                                  React.createElement("li",null,"yes"),
    5.                                  React.createElement("li",null,"no"))),
    6. )

    注意:该方法繁琐、不直观、不优雅、体验感差,不推荐使用 

    2、JSX方法:

    1. "d1" class="item">
    2. <ul>
    3.          <li>okli>
    4.          <li>yesli>
    5.          <li>noli>
    6. ul>
  • 注意:<1>JSX:javascript xml 

               <2>JSX是React的核心内容

               <3>React完全利用JS语言自身的能力来编写UI,而不是增强HTML功能

    (1)使用JSX创建react元素

    const title=<h1>123h1>

    (2)原理

       <1>babel进行编译,转换成js对象,用ReactDom。

       <2>render()方法将这个对象转成DOM元素,最后插入页面

    (3)注意

       <1>第一点

          1)JSX不是ES的标准语法,它是ES的语法拓展

          2)需要使用babel编译处理后才能再浏览器环境中使用

          3)编译JSX的包:@babel/preset-react

       <2>第二点

          1)React元素的属性名使用驼峰命名法

          2)如果元素没有子节点,可直接使用但标签,但是以/>结尾

          3)可以使用()包裹JSX,以避免一些问题

    三、JSX表达式

    1. //js表达式
    2. let ok=123;
    3. const text=(
    4. <p>{ok}p>
    5. )
    1. //数字相加运算
    2. let ok = (
    3. <div>
    4. <h1>欢迎学习h1>
    5. <h2>{1+1}h2>
    6. div>
    7. )
    1. //不同类型结合运算
    2. let time = new Date().toLocaleTimeString();
    3. let str = '当前时间是:'
    4. let element = (
    5. <div>
    6. <h1>学习h1>
    7. <h2>{str+time}h2>
    8. div>
    9. )
    1. //三元表达式
    2. let man = "发热"
    3. let ok = (
    4. <div>
    5. <h1>今天是否学习h1>
    6. <h2>{man === "摆烂?"学习":"躺平"}h2>
    7. div>
    8. );
    1. //元素渲染
    2. let man = "发热"
    3. let ok = (
    4. <div>
    5. <h1>今天是否隔离h1>
    6. <h2>{man === "发热"?<button>隔离button>:<button>躺床上button>}h2>
    7. div>
    8. );
    1. //嵌套JSX
    2. let ok = (
    3. <div>
    4. <span>横着躺span>
    5. <span>竖着躺span>
    6. div>
    7. )
    8. let man = "不发热"
    9. let ok1 = (
    10. <div>
    11. <h1>今天是否隔离h1>
    12. <h2>{man === "发热"?<button>隔离button>:ok}h2>
    13. div>
    14. );

    四、条件渲染

    可以使用if 三元运算符 逻辑运算符

    1. let is = ture;
    2. const ok = () => {
    3. if (is) return (<div>学习react全家桶div>)
    4. return (<div>一定要坚持学习div>)
    5. }

    五、列表渲染

    使用数组的map方法

    1. const books = [
    2. { id: 1, name: "西游记", author: "吴承恩" },
    3. { id: 2, name: "水浒传", author: "施耐庵" },
    4. { id: 3, name: "红楼梦", author: "曹雪芹" },
    5. { id: 4, name: "三国演义", author: "罗贯中" },
    6. ]
    7. const list = (<ul>
    8. {books.map(item => <li key={item.id}>书名:{item.name},作者:{item.author}li>)}
    9. ul>)

    六、样式处理

    1、行内样式style

    const title=<h1 style={{width:"200px",height:"100px"}}>你好h1>

    注意: 不是两组花括号,外边代表的js。里边代表的是对象

    2、类名 className(推荐)      

    注意:使用import导入css样式表

  • 相关阅读:
    No qualifying bean of type ‘...‘ available错误解决
    Splashtop 荣获2023年 NAB 展会年度产品奖
    (Note)Elsevier爱思唯尔期刊投稿流程
    大厂秋招真题【DFS/BFS】美团20230812秋招T5-小美的字符串变换
    Azure考试认证经验
    【Java】文件操作(一)
    Java基础进阶线程的生命周期
    chatglm2微调—ptuning
    使用Maven 构建、开发和打包 JavaFX 项目
    微软宣布 S2C2F 已被 OpenSSF 采用
  • 原文地址:https://blog.csdn.net/m0_62697897/article/details/127732052