jsx和vdom的关系

jsx最终要被编译成js代码,jsx变成js代码有个核心的函数是React.createElement(),这个函数vdom里的h函数很相似。
vdom是react引入并推广的,vdom里面有两个核心函数:h函数 和 patch函数
为何需要vdom:

  • vdom是react初次推广开来的,结合jsx
  • jsx就是模板,最终要被渲染成html。类似Vue的模板最终要渲染成html,所有渲染成html的模板都要转化成js代码,所有渲染成html都是通过vdom来执行的,
  • 初次渲染 + 修改 state 后的re-render(渲染html的两个场景)
  • 正好符合vdom的应用场景,

React.createElement 和 h :
在这里插入图片描述
其实vdom的h函数会生成一个vnode,react的React.creareElement函数也是返回一个vnode,vnode是以下这种结构:
在这里插入图片描述
何时patch:

  • 初次渲染会触发patch(container,vnode)ReactDOM.render(<App/>,container)<App/>是一个jsx结构,虽然这个结构后面还有好多内容,但只要是jsx语法就需要转换成js代码来执行,接着会返回vnode。 在这里插入图片描述
  • 多次渲染 re-render:setState时会修改数据,触发patch(vnode,newVnode),在这里插入图片描述
    总结:
    jsx语法要转换成js代码,这个js代码最终会生成vnode。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值