React基础篇——一、JSX

一、JSX

用于描述UI的JavaScript扩展语法,是UI描述和UI数据之间的桥梁。

1,语法

JSX本质上还是JavaScript。

①基本语法和XML语法相同,都是使用成对的标签构成一个树状结构的数据。

const element = {
  <div>
     <h1>Hello,world</h1>
  </div>
}

②两种标签类型:dom类型的标签(首字母必须小写)和React组件类型的标签(首字母必须大写)。React通过首字母的大小写判断渲染的组件是DOM标签还是React类型的标签。

const elementDom = <h1>Hello,world</h1>;

const elementReact = <HelloWorld />;

const element = (
  <div>
    <HelloWorld />
  </div>
)

③JavaScript表达式

在JSX中使用表达式需要将表达式用大括号{}包起来、表达式在JSX使用场景有两个:

  • 通过表达式给标签属性赋值
  • 通过表达式定义子组件

JSX中只能使用JavaScript表达式,不能使用多行JavaScript语句。(可以使用三目运算符或逻辑与(&&)代替if语句的作用)

//通过表达式给标签属性赋值
const element = <User age={1+1} />;
//通过表达式定义子组件
const element = ( 
  <ul>
    {list.map((item) => <User name={item.name} age={item.age} />)}
  </ul>
)

//错误
const element = (
  <div>
    {
      if(complete) {
        return <User />;
      } else {
        return null;
      }
    }
  </div>
)

//正确
const element = (
  <div>
    {
      complete ? <User /> : null
    }
  </div>
)
const element = (
  <div>
    complete&&<User />
  </div>
)

④标签属性

  • JSX标签是DOM标签时,对应DOM标签支持的属性JSX也支持,例如id、class、style、onclick等,部分属性名称有所改变,例如class要写成className,事件属性名称采用驼峰命名法,例如onclick要写成onClick。
  • JSX标签是React标签时,可以任意自定义标签的属性名。

⑤注释需要用大括号{}包一下

2,JSX不是必需的(但应首选JSX语法)

JSX只是React.createElement(component,props,...children)的语法糖,所有的JSX语法最终都会被转换成对这个方法的调用。

//JSX语法
const element = <div className='foo'>Hello,world</div>

//转换后
const element = React.createElement('div',{className:'foo'},'Hello,React')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值