当前位置: 首页 > news >正文

视频连接网站怎么做淄博电商网站建设

视频连接网站怎么做,淄博电商网站建设,建设银行手机不用了怎么登陆网站,沈阳电子商务网站建设摘要 经过之前的几篇文章#xff0c;我们实现了基本的jsx#xff0c;在页面渲染的过程。但是如果是通过函数组件写出来的组件#xff0c;还是不能渲染到页面上的。 所以这一篇#xff0c;主要是对之前写得方法进行修改#xff0c;从而能够显示函数组件#xff0c;所以现…摘要 经过之前的几篇文章我们实现了基本的jsx在页面渲染的过程。但是如果是通过函数组件写出来的组件还是不能渲染到页面上的。 所以这一篇主要是对之前写得方法进行修改从而能够显示函数组件所以现在我们在index.js文件中修改一下jsx的写法。修改成函数组件 import jsx from ../src/react/jsx.js import ReactDOM from ../src/react-dom/indexconst root document.querySelector(#root);function App() {return jsx(div, {ref: 123,children: jsx(span, {children: 456})}); }ReactDOM.createRoot(root).render(App /)这里因为需要使用我们自己的jsx方法。所以在App里面返回的依旧是通过之前的方式进行调用。 1.修改reconcileChildren方法 我们来回忆一下在beginWork阶段我们主要是通过ReactElement创建FilberNode。而reconcileChildren就是创建FilberNode的方法。 在之前我们只处理了HostText类型和HostComponent类型所以在这个方法里面我们要对函数类型进行兼容而作为函数组件的ReactElment它最显而易见的特点就是type的值是一个函数。 例如上面的App组件对应的ReactElement的type就是App。所以我们可以通过type来判断组件的类型 function reconcileChildren(element) {let tag;if(typeof element.type function) {tag FunctionComponent}//其他代码console.log(filberNode)return filberNode }我们打印一下看看这个函数组件是否满足预期 2.updateFunctionComponent方法 现在有了tag为FunctionComponent类型的FilberNode在beginWork里面我们就要对这个类型的FilberNode进行处理 function beginWork(nowFilberNode) {switch (nowFilberNode.tag) {//其他代码case FunctionComponent: {return updateFunctionComponent(nowFilberNode)}//其他代码} }现在我们来实现updateFunctionComponent方法。 之前对于HostComponent类型的FilberNode它的子节点其实就是它对应的ReactElement。 但是对于函数类型的FilberNode我们想一下不就是它自己的返回值嘛所以我们直接调用这个函数就能拿到它的子FilberNode了。 function updateFunctionComponent(filberNode) {const nextChildren filberNode.type();const newFilberNode reconcileChildren(nextChildren);filberNode.child newFilberNode;newFilberNode.return filberNode;beginWork(newFilberNode) }2.修改completeWork方法 对于completeWork方法 它的主要作用目前是给对应的FilberNode增加stateNode而函数组件并没有自己对应的StateNode所以直接继续递归就可以了 export const completeWork (filberNode) {const tag filberNode.tagswitch (tag) {//其他代码。。。case FunctionComponent: {completeWork(filberNode.child)}} }3.修改commitWork方法 对于之前的commitWork我们是直接将最外层的FilberNode的stateNode挂载了容器上现在由于最外层的可能是FunctionComponent它是没有自己的stateNode的。所以我们要找到具有stateNode的最外层FilberNode。 import { HostComponent } from ./filberNode;export function commitWork(filberRootNode) {const container filberRootNode.container;let node filberRootNode.finishedWork;while( node.tag ! HostComponent ){node node.child}container.appendChild(node.stateNode) }OK经过上面的修改我们的App组件也可以正常渲染了。
http://www.zqtcl.cn/news/884429/

相关文章:

  • 商城网站建站程序网站内链布局
  • 盐城网站建设方案全景旅游网站项目建设
  • 网站备案完电信园林效果图网站
  • 伤豆丁文库网站开发贵州网站备案局
  • 做网站的注意什么北京建设协会网站首页
  • 石家庄网站开发设计网站建设重点步骤
  • 推广思路及执行方案昆明百度seo
  • 太原公司网站建立可视化小程序开发工具
  • 怎么做网站的搜索引擎云主机有什么用
  • 淘宝客新增网站南宁百度seo优化
  • 建设厅网站合同备案在哪里网站备案本人承诺
  • 做方案的网站住房城乡建设部官网
  • 怎样在门户网站做 推广天水市建设银行官方网站
  • 温州建网站哪家强网站建设谈客户说什么
  • 网站的子域名怎么设置整站seo排名外包
  • 免费网站在哪下载苏州建设银行网站
  • 邹平 建设项目 网站公示怎样做网站卖自己的产品教程
  • 手机免费网站建设哪家公司好免费动态域名申请
  • 提升网站排名怎么提交自己的网站
  • cms网站开发phpwordpress有什么功能
  • 专业网站制作解决方案自己在家搭建服务器
  • 中小企业网站提供了什么英文营销网站建设
  • 玉环市建设工程检测中心网站网站建设服务的具体条件
  • 主机网站wampserver搭建网站
  • 建设银行网站点不进去深圳龙华区招聘网最新招聘信息
  • 网站建设公司现在还挣钱吗wordpress棋牌
  • 网站建设有什么技术自媒体平台哪个好
  • 可以建网站的软件南昌seo代理商
  • 手机网站建设宽度中小型企业网站模板
  • 网站开发需要的所有技术中信建设有限责任公司历任董事长