作用:

创建react元素

creatElement() 的区别

cerareElement()代码不够简洁 不够直观 用户体验不好
JSX 写法直观 与HTML 相同 学习的成本低 提升开发效率

使用:

创建一个元素

  1. const abc = (<div>hello</div>)
  2. // 推荐使用()包裹JSX

注意:JSX 是EcmaScript 的扩展 ,不能在js代码中直接使用,需要使用Bable进行编译处理才可以使用
脚手架中已经有了该配置,无需手动配置

命名规范

react中元素的属性使用驼峰命名法
特殊属性名

H5 名称 JSX名称
class className
for htmlFor
tabindex tabIndex

使用js表达式

使用{}包裹js表达式

  1. // 直接使用变量
  2. const name = 'li'
  3. const abc = <div> { name } </div>
  4. // 直接输出字符串
  5. const abc = <div> { 'li' } </div>
  6. // 三元
  7. const abc = <div> { 1<2?'小于':'大于' } </div>

{}中可以是任何合法的js表达式 , 不能在{} 中使用语句 如:if for
JSX自身也是一个js表达式
除特殊情况(style属性)外对象不可以直接使用

JSX的条件渲染

条件渲染即根据不同的条件得到不同的JSX代码
if else方法

  1. // 根据条件返回不同的JSX
  2. const abc = ()=>{
  3. if(1>2){
  4. return <div>错</div>
  5. } else {
  6. return <div>对</div>
  7. }
  8. }

三元表达式

  1. 1>2?(<div>对</div>):(<div>错</div>)
  1. 逻辑运算符 `&&`
  1. // 与其他方法不同&&只能控制是否输出元素
  2. 1>2&&(<div>错</div>)

列表渲染

JSX中使用数组的map方法进行列表渲染

  1. const arr = [{name:'laoli',id:1},{name:'laowang',id:2}]
  2. // key 必须存在且不重复
  3. const abc = <ul>{arr.map(it=>(<li key={it.id}>{it.name}</li>)) }</ul>

样式处理

行内样式 style

  1. // style 属性内包裹一个对象
  2. // css以键值对方式书写 注意驼峰命名
  3. const abc = ( <div style={ {color:'red',background:'$753'} }></div> )
  1. **类样式 **`**className**`
  1. // 使用className作为类名
  2. const abc = ( <div className="title"></div> )
  3. // 在css文件中书写对应的类样式 这里对类样式进行了省略
  4. 在当前的js文件在引入css文件
  5. imoirt './XXX.css' // css文件路径