2.React:对JSX的了解和认识

27 阅读2分钟

1.React为什么要发明JSX

React认为视图的本质就是渲染逻辑与UI视图表现的内在统一。React把HTML与渲染逻辑进行了耦合,形成JSX。

JSX来源于PHP,JSX不是标准的JS语法

2.JSX的作用

可以像ES6模板字符串一样插入
const name = 'Jackson'
const element = <h1>Hello,{name}</h1>
ReactDOM.render(
  element,document.getElementById('root')
)
可以像嵌入表达式
function Name(user) {
  return user.firstName + user.lastName
}
const user = {
  firstName: 'Lisa',
  lastName:'Tom'
}
const element = (
  <h1>
    Hello,{ Name(user) }
  </h1>
)
可以提早闭合
const element = <img src={user.avatarUrl}/>
可以包含很多子元素
const element = (
  <div>
    <h1>Hello!</h1>
    <h2>Good to see you here.</h2>
  </div>
)

3.JSX底层到底在做什么

const element = (
  <h1 className='App'>Hello, World!</h1>
)
const element = React.creatElement(
  'h1',{className:'App','Hello,World!'}
)

以上的写法效果一样

JSX实际上会把HTML编译成对象,再通过算法把东西渲染到页面上。

4.JSX注意事项

  • React的元素的属性名使用驼峰名方法
  • 特殊属性名(比如class -> className)使用小驼峰
  • 没有子节点的React元素可以用 /> 提前闭合标签
  • 推荐使用小括号包裹JSX

5.JSX的总结

  • JSX是react的核心内容
  • JSX表示在JS代码中写HTML结构是React声明式的表现
  • 使用JSX配合嵌入的JS表达式、条件渲染、列表渲染、可以描述任意UI结构

优点

1.方便,两种代码可以在一起混写,不用考虑不同文件类型如何组织的问题

2.可以将逻辑和视图交织写在一起,遇到列表、嵌套结构等逻辑视图时,思维负担比模板更小

缺点

1.两种不同的体系的语言元素写在一起,会显著降低可读性

2.短时间内不可能成为规范

JSX是一个牺牲可读性,拥有vue模板特征,增强视图可编辑性和编辑效率的工具,灵活,但并非没有代价。