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

武宁网站ui专业设计深圳市城乡住房和建设局网站首页

武宁网站ui专业设计,深圳市城乡住房和建设局网站首页,网站规划与建设ppt,微信广告服务商平台一、是什么 react通过将组件编写的JSX映射到屏幕#xff0c;以及组件中的状态发生了变化之后 React会将这些「变化」更新到屏幕上 在前面文章了解中#xff0c;JSX通过babel最终转化成React.createElement这种形式#xff0c;例如#xff1a; div img src以及组件中的状态发生了变化之后 React会将这些「变化」更新到屏幕上 在前面文章了解中JSX通过babel最终转化成React.createElement这种形式例如 div img srcavatar.png classNameprofile /Hello / /div会被bebel转化成如下 React.createElement(div,null,React.createElement(img, {src: avatar.png,className: profile}),React.createElement(Hello, null) );在转化过程中babel在编译时会判断 JSX 中组件的首字母 当首字母为小写时其被认定为原生 DOM 标签createElement 的第一个变量被编译为字符串 当首字母为大写时其被认定为自定义组件createElement 的第一个变量被编译为对象 最终都会通过RenderDOM.render(...)方法进行挂载如下 ReactDOM.render(App /, document.getElementById(root));二、过程 在react中节点大致可以分成四个类别 原生标签节点文本节点函数组件类组件 如下所示 class ClassComponent extends Component {static defaultProps {color: pink};render() {return (div classNameborderh3ClassComponent/h3p className{this.props.color}{this.props.name}/p /div);} }function FunctionComponent(props) {return (div classNameborderFunctionComponentp{props.name}/p /div); }const jsx (div classNameborderpxx/p a href xxx/ aFunctionComponent name函数组件 /ClassComponent name类组件 colorred //div );这些类别最终都会被转化成React.createElement这种形式 React.createElement其被调用时会传⼊标签类型type标签属性props及若干子元素children作用是生成一个虚拟Dom对象如下所示 function createElement(type, config, ...children) {if (config) {delete config.__self;delete config.__source;}// ! 源码中做了详细处理⽐如过滤掉key、ref等const props {...config,children: children.map(child typeof child object ? child : createTextNode(child))};return {type,props}; } function createTextNode(text) {return {type: TEXT,props: {children: [],nodeValue: text}}; } export default {createElement };createElement会根据传入的节点信息进行一个判断 如果是原生标签节点 type 是字符串如div、span如果是文本节点 type就没有这里是 TEXT如果是函数组件type 是函数名如果是类组件type 是类名 虚拟DOM会通过ReactDOM.render进行渲染成真实DOM使用方法如下 ReactDOM.render(element, container[, callback])当首次调用时容器节点里的所有 DOM 元素都会被替换后续的调用则会使用 React 的 diff算法进行高效的更新 如果提供了可选的回调函数callback该回调将在组件被渲染或更新之后被执行 render大致实现方法如下 function render(vnode, container) {console.log(vnode, vnode); // 虚拟DOM对象// vnode _ nodeconst node createNode(vnode, container);container.appendChild(node); }// 创建真实DOM节点 function createNode(vnode, parentNode) {let node null;const {type, props} vnode;if (type TEXT) {node document.createTextNode();} else if (typeof type string) {node document.createElement(type);} else if (typeof type function) {node type.isReactComponent? updateClassComponent(vnode, parentNode): updateFunctionComponent(vnode, parentNode);} else {node document.createDocumentFragment();}reconcileChildren(props.children, node);updateNode(node, props);return node; }// 遍历下子vnode然后把子vnode-真实DOM节点再插入父node中 function reconcileChildren(children, node) {for (let i 0; i children.length; i) {let child children[i];if (Array.isArray(child)) {for (let j 0; j child.length; j) {render(child[j], node);}} else {render(child, node);}} } function updateNode(node, nextVal) {Object.keys(nextVal).filter(k k ! children).forEach(k {if (k.slice(0, 2) on) {let eventName k.slice(2).toLocaleLowerCase();node.addEventListener(eventName, nextVal[k]);} else {node[k] nextVal[k];}}); }// 返回真实dom节点 // 执行函数 function updateFunctionComponent(vnode, parentNode) {const {type, props} vnode;let vvnode type(props);const node createNode(vvnode, parentNode);return node; }// 返回真实dom节点 // 先实例化再执行render函数 function updateClassComponent(vnode, parentNode) {const {type, props} vnode;let cmp new type(props);const vvnode cmp.render();const node createNode(vvnode, parentNode);return node; } export default {render };三、总结 在react源码中虚拟Dom转化成真实Dom整体流程如下图所示 其渲染流程如下所示 使用React.createElement或JSX编写React组件实际上所有的 JSX 代码最后都会转换成React.createElement(...) Babel帮助我们完成了这个转换的过程。createElement函数对key和ref等特殊的props进行处理并获取defaultProps对默认props进行赋值并且对传入的孩子节点进行处理最终构造成一个虚拟DOM对象ReactDOM.render将生成好的虚拟DOM渲染到指定容器上其中采用了批处理、事务等机制并且对特定浏览器进行了性能优化最终转换为真实DOM
文章转载自:
http://www.morning.hypng.cn.gov.cn.hypng.cn
http://www.morning.mfmrg.cn.gov.cn.mfmrg.cn
http://www.morning.tgfjm.cn.gov.cn.tgfjm.cn
http://www.morning.ntyks.cn.gov.cn.ntyks.cn
http://www.morning.jwgnn.cn.gov.cn.jwgnn.cn
http://www.morning.fyglr.cn.gov.cn.fyglr.cn
http://www.morning.zpzys.cn.gov.cn.zpzys.cn
http://www.morning.snnwx.cn.gov.cn.snnwx.cn
http://www.morning.smzr.cn.gov.cn.smzr.cn
http://www.morning.zkjqj.cn.gov.cn.zkjqj.cn
http://www.morning.zpxwg.cn.gov.cn.zpxwg.cn
http://www.morning.jgnst.cn.gov.cn.jgnst.cn
http://www.morning.fbqr.cn.gov.cn.fbqr.cn
http://www.morning.rwlns.cn.gov.cn.rwlns.cn
http://www.morning.pbzlh.cn.gov.cn.pbzlh.cn
http://www.morning.xjwtq.cn.gov.cn.xjwtq.cn
http://www.morning.lpmdy.cn.gov.cn.lpmdy.cn
http://www.morning.khcpx.cn.gov.cn.khcpx.cn
http://www.morning.xtdtt.cn.gov.cn.xtdtt.cn
http://www.morning.tdhxp.cn.gov.cn.tdhxp.cn
http://www.morning.kcypc.cn.gov.cn.kcypc.cn
http://www.morning.rpms.cn.gov.cn.rpms.cn
http://www.morning.tqrjj.cn.gov.cn.tqrjj.cn
http://www.morning.gwqcr.cn.gov.cn.gwqcr.cn
http://www.morning.geledi.com.gov.cn.geledi.com
http://www.morning.skrcn.cn.gov.cn.skrcn.cn
http://www.morning.pzrrq.cn.gov.cn.pzrrq.cn
http://www.morning.nzdks.cn.gov.cn.nzdks.cn
http://www.morning.wsyst.cn.gov.cn.wsyst.cn
http://www.morning.bsqkt.cn.gov.cn.bsqkt.cn
http://www.morning.gnfkl.cn.gov.cn.gnfkl.cn
http://www.morning.klpwl.cn.gov.cn.klpwl.cn
http://www.morning.rwlnk.cn.gov.cn.rwlnk.cn
http://www.morning.qnxzx.cn.gov.cn.qnxzx.cn
http://www.morning.tqxtx.cn.gov.cn.tqxtx.cn
http://www.morning.hmmtx.cn.gov.cn.hmmtx.cn
http://www.morning.bgxgq.cn.gov.cn.bgxgq.cn
http://www.morning.wqjpl.cn.gov.cn.wqjpl.cn
http://www.morning.xjwtq.cn.gov.cn.xjwtq.cn
http://www.morning.srgyj.cn.gov.cn.srgyj.cn
http://www.morning.tpyrn.cn.gov.cn.tpyrn.cn
http://www.morning.rkrl.cn.gov.cn.rkrl.cn
http://www.morning.dqwykj.com.gov.cn.dqwykj.com
http://www.morning.rdlrm.cn.gov.cn.rdlrm.cn
http://www.morning.pxmyw.cn.gov.cn.pxmyw.cn
http://www.morning.tnmmp.cn.gov.cn.tnmmp.cn
http://www.morning.zcckq.cn.gov.cn.zcckq.cn
http://www.morning.mcjp.cn.gov.cn.mcjp.cn
http://www.morning.qwqzk.cn.gov.cn.qwqzk.cn
http://www.morning.jyjqh.cn.gov.cn.jyjqh.cn
http://www.morning.jhrkm.cn.gov.cn.jhrkm.cn
http://www.morning.cpktd.cn.gov.cn.cpktd.cn
http://www.morning.ljdd.cn.gov.cn.ljdd.cn
http://www.morning.bauul.com.gov.cn.bauul.com
http://www.morning.wnkbf.cn.gov.cn.wnkbf.cn
http://www.morning.lzqxb.cn.gov.cn.lzqxb.cn
http://www.morning.cdrzw.cn.gov.cn.cdrzw.cn
http://www.morning.rfjmy.cn.gov.cn.rfjmy.cn
http://www.morning.wztlr.cn.gov.cn.wztlr.cn
http://www.morning.mfnsn.cn.gov.cn.mfnsn.cn
http://www.morning.mmplj.cn.gov.cn.mmplj.cn
http://www.morning.bpmfg.cn.gov.cn.bpmfg.cn
http://www.morning.qnrpj.cn.gov.cn.qnrpj.cn
http://www.morning.plqqn.cn.gov.cn.plqqn.cn
http://www.morning.fplwz.cn.gov.cn.fplwz.cn
http://www.morning.fxzlg.cn.gov.cn.fxzlg.cn
http://www.morning.zypnt.cn.gov.cn.zypnt.cn
http://www.morning.xkpjl.cn.gov.cn.xkpjl.cn
http://www.morning.pqryw.cn.gov.cn.pqryw.cn
http://www.morning.bfybb.cn.gov.cn.bfybb.cn
http://www.morning.mspkz.cn.gov.cn.mspkz.cn
http://www.morning.grjh.cn.gov.cn.grjh.cn
http://www.morning.tgyqq.cn.gov.cn.tgyqq.cn
http://www.morning.xdttq.cn.gov.cn.xdttq.cn
http://www.morning.dbphz.cn.gov.cn.dbphz.cn
http://www.morning.nkyc.cn.gov.cn.nkyc.cn
http://www.morning.jxgyg.cn.gov.cn.jxgyg.cn
http://www.morning.dzfwb.cn.gov.cn.dzfwb.cn
http://www.morning.kehejia.com.gov.cn.kehejia.com
http://www.morning.rqqmd.cn.gov.cn.rqqmd.cn
http://www.tj-hxxt.cn/news/257615.html

相关文章:

  • 旅游网站建设推广办公软件开发
  • 网站推广计划怎么写高雅不俗气的公司名字
  • 国家企业信息信用公信系统优化大师官方
  • 怎么搭建自己的网站挣钱做单页网站需要做什么的
  • 体检营销型网站wordpress下载的主题怎么启动
  • 17网站一起做网店普宁申请一个网站需要多少钱
  • 哪个网站课件做的比较好做网站搜索推广点击率太低怎么办
  • 网站建设课程设计要求买一个软件大概多少钱
  • 加强网站信息建设方案东莞网站建设17
  • 做导师一般去什么网站找素材1g1m wordpress
  • 影视采集网站怎么做收录wordpress 修改管理员头像
  • 网站模板制作流程重庆大足网站建设
  • p2p网站建设 深圳太原网站优化哪家专业
  • 彬县网房屋出租上海搜索优化推广
  • 昆明网站seo技术厂家霸州做网站
  • 做网站外包公司名称大全深圳前海网站设计
  • 制作营销型网站的公司百度广告代理商加盟
  • 仿新浪全站网站源码松江公司做网站
  • 寺庙网站模板网站搭建福州公司
  • 三门网站制作wordpress 标签图片
  • 组建团队建设网站与开发需要多少钱建设网站需要什么设备
  • 工业设计网站排名做网站字体大小
  • 工程中心网站建设汇报楼盘网站建设方案ppt
  • 网站实现留言功能吗泰州公司注册
  • 安微省建设厅田网站瓯海建设网站
  • 吴中区网站建设网站如何做外链
  • 个人备案网站建设方案书政务网站安全建设工作计划
  • 成都做整站优化公司官网制作开发
  • 中国住房和城乡建设部网站公文专业做网站的公司有没有服务器
  • 企业网站的宣传功能体现在哪里网站导航栏种类