JSX 基本语法规则

JSX 全称 JavaScript XML,是React 定义的一种类似于 XML 的 JS 扩展语法:JS + XML 本质是 React.createElement(component, props, ...children) 方法的语法糖。 用于简化创建虚拟 DOM,写法:var ele = <h1>Hello JSX!</h1>。注意,它不是字符串,也不是 HTML/XML 标签。它最终产生的是一个 JS 对象。


基本语法规则

定义虚拟 DOM 时,不要写引号

JSX 采用下面的方式创建虚拟 DOM

//1. 创建虚拟DOM
const VDOM = (
	<h2 id='atguigu'>
		<span>hello,react</span>	
	</h2>
)

标签中混入 JS 表达式要用 {}

		const myId = 'aTgUiGu'
        const myData = 'Hello,rEaCt' 

        //1. 创建虚拟DOM
        const VDOM = (
               <h2 id={myId.toLowerCase()}>
                   <span>{myData.toLowerCase()}</span>
               </h2>
        )

样式的类名指定不要用class,要用className

		const myId = 'aTgUiGu'
        const myData = 'Hello,rEaCt' 

        //1. 创建虚拟DOM
        const VDOM = (
               <h2 className="title" id={myId.toLowerCase()}>
                   <span>{myData.toLowerCase()}</span>
               </h2>
        )

内联样式,要使用style={{key:value}}的样式

		const myId = 'aTgUiGu'
        const myData = 'Hello,rEaCt' 

        //1. 创建虚拟DOM
        const VDOM = (
               <h2 className="title" id={myId.toLowerCase()}>
                   <span style={{color:'white', fontSize:'29px'}}>{myData.toLowerCase()}</span>
               </h2>
        )

只能有一个根标签

如果我们复制一下上面的 <h2>,会报错,这是因为只能有一个根标签,所以添加一个 <div> 将两个 <h2> 包起来。

		const myId = 'aTgUiGu'
        const myData = 'Hello,rEaCt' 

        //1. 创建虚拟DOM
        const VDOM = (
            <div>
                <h2 className="title" id={myId.toLowerCase()}>
                    <span style={{color:'white', fontSize:'29px'}}>{myData.toLowerCase()}</span>
                </h2>
                <h2 className="title" id={myId.toUpperCase()}>
                    <span style={{color:'white', fontSize:'29px'}}>{myData.toLowerCase()}</span>
                </h2>
            </div>
        )

标签必须闭合

如果我们添加一个文本输入框,如果写成 <input type="text"> 会报错,这是因为,JSX 里的标签必须闭合,所以,应该写成 <input type="text"/>

        const myId = 'aTgUiGu'
        const myData = 'Hello,rEaCt' 

        //1. 创建虚拟DOM
        const VDOM = (
            <div>
                <h2 className="title" id={myId.toUpperCase()}>
                    <span style={{color:'white', fontSize:'29px'}}>{myData.toLowerCase()}</span>
                </h2>
                <input type="text"/>
            </div>
        )

标签首字母

  • 若小写字母开头,则将该标签转为html中同名元素,若html中无该标签对应的同名元素,则报错。
  • 若大写字母开头,react将去渲染对应的组件,若组件没有定义,则报错。
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值