JSX 是 JavaScript 的一种语法扩展,它和模板语言很接近,但是它充分具备 JavaScript 的能力。
JSX 会被编译为 React.createElement(), React.createElement() 将返回一个叫作“React Element”的 JS 对象。
JSX 的本质是React.createElement这个 JavaScript 调用的语法糖
ReactElement 对象实例,本质上是以 JavaScript 对象形式存在的对 DOM 的描述,也就是老生常谈的“虚拟 DOM”(准确地说,是虚拟 DOM 中的一个节点。
在每一个 React 项目的入口文件中,都少不了对 React.render 函数的调用。下面我简单介绍下 ReactDOM.render 方法的入参规则:
ReactDOM.render(
// 需要渲染的元素(ReactElement)
element,
// 元素挂载的目标容器(一个真实DOM)
container,
// 回调函数,可选参数,可以用来处理渲染结束后的逻辑
[callback]
)
ReactDOM.render 方法可以接收 3 个参数,其中第二个参数就是一个真实的 DOM 节点,这个真实的 DOM 节点充当“容器”的角色
组件在初始化时,会通过调用生命周期中的 render 方法,生成虚拟 DOM,然后再通过调用 ReactDOM.render 方法,实现虚拟 DOM 到真实 DOM 的转换。
当组件更新时,会再次通过调用 render 方法生成新的虚拟 DOM,然后借助 diff定位出两次虚拟 DOM 的差异,从而针对发生变化的真实 DOM 作定向更新。
APP.js
const name= ‘拉勾教育’ const flag = true const obj = { name:‘拉勾教育’, age:100 } function sayHello () { return‘大家好’ } function App() { return ( <div> <p>{name}</p> <p>name</p> <p>{sayHello()}</p> <p>{console.log(‘1111’)}</p> <p>{Math.random()}</p> <p>{flag ? ‘登录的状态’ : ‘执行登录’}</p> <p>{hello, </font><font style="color:#569cd6;">${</font><font style="color:#4fc1ff;">name</font><font style="color:#569cd6;">}</font><font style="color:#ce9178;">
}</p>
<p>1224{/这里是注释的内容 /}</p>
//打印对象需要处理,转换为字符串
<p>{JSON.stringify(obj)}</p>
</div>
)
}
exportdefault App