【react】——jsx语法使用和注意事项

什么是jsx,为什么要用jsx

jsx是一个JavaScript的语法扩展。我们建议在react中配合使用jsx,jsx可以很好地描述UI应该呈现出它应有的交互的本质形式。
JSX 可能会使人联想到模板语言,但它具有 JavaScript 的全部功能。

如何使用jsx语法

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script crossorigin src="https://unpkg.com/react@16/umd/react.development.js"></script>
    <script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
    <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
</head>

<body>
</body>

</html>
<script type="text/babel">
    //在这里可以书写jsx语法,可以看到,同一般script标签不一样的是,需要加上type="text/babel"
    //这代表了babel将这个标签内的高级语法解析成浏览器可以认识解析的语法
</script>

jsx是js的语法糖,为了方便书写虚拟DOM。
之前书写html结构是这样的:

let str = `<h1>hello react</h1>`

而jsx语法书写html结构是这样的:

let oH = <div>
     hello jsx!
</div>;

jsx注意事项

1、script标签上必须使用type=‘text/babel’。后面如果用webpack会有其它的配置方法
2、多个标签必须有一个根标签包裹
3、可以随便缩进,可以给外面加一个括号

let oDiv = (<div>hello react!</div>);

4、单标签必须闭合

 let oDiv = (
            <div>
                <div> hello react!</div>
                <img src="" alt=""></img>
            </div>
        );

let oDiv = (
     <div>
         <div> hello react!</div>
         <img src="" alt=""/>
      </div>
);

5、jsx里面如果用到变量,jsx里面可以使用一对{}包括
可以使用:
变量

 let str = ` hello react!`;
 let oDiv = (
              <div>
                 <div>{str}</div>
              </div>
);

函数调用

let fn = () => {
     return '我是一个方法'
}
let oDiv = (
    <div>
        <div>{fn()}</div>
    </div>
);

简单的计算

let a = 1;
let b = 2;
let oDiv = (
    <div>
        <div>{a+b}</div>
    </div>
);

三木运算

let a = 1;
let oDiv = (
    <div>
       <div>{a == 1 ? '你好' : '不好'}</div>
    </div>
);

6、关于属性,如果是变量,必须把引号去掉

let imgsrc = `https://www.w3cschool.cn/attachments/image/20170807/1502094999971188.png`;
let oDiv = (
    <div>
       <img src={imgsrc} alt="" />
    </div>
);

7、class要变成classname,class也能出来但是回报错(和js相关的要用js的写法)
如:data-index改成dataIndex,zIndex

let oDiv = (
       <div>
            <div classname="h1">{a + b}</div>
       </div>
);

8、style还是一个花括号,只是里面要用json对象的形式去写,所以看起来会是两个花括号

let oDiv = (
     <div>
        <div style={{marginRight:20px}}>{fn()}</div>
     </div>
);

9、{}里面能放的数据类型是什么

数据类型结论(能否正常显示)
number
string
boolean❌(布尔值转化成了空)
array❌(会把数组里的每一项一个一个单独写出来)
json❌(直接报错,不能直接展示,需要用JSON.stringify())
undefined
NaN
null

10、添加事件

<button onClick={show}><button> 

需要驼峰,后面需要大写,加了引号永远都是字符串,事件后面需要函数,所以用{}。
且show要是一个函数,也就是说{}里放的是一个函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨不旧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值