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

自己做网站新手入门安徽城乡建设 厅网站

自己做网站新手入门,安徽城乡建设 厅网站,中国建设注册管理中心网站,旧电脑做网站服务器函数式编程 纯函数 reducer 必须是一个纯函数#xff0c;即没有副作用的函数#xff0c;不修改输入值#xff0c;相同的输入一定会有相同的输出不可变值 state 必须是不可变值#xff0c;否则在 shouldComponentUpdate 中无法拿到更新前的值#xff0c;无法做性能优化操作…函数式编程 纯函数 reducer 必须是一个纯函数即没有副作用的函数不修改输入值相同的输入一定会有相同的输出不可变值 state 必须是不可变值否则在 shouldComponentUpdate 中无法拿到更新前的值无法做性能优化操作。 vdom 和 diff 算法 JSX 本质 是 React.createElement 函数 React.createElement(tag, props, child1, child2, child3)React.createElement(tag, props, [child1, child2, child3]) 执行生成 vnode const elem divpaaa/pp style{{ color: red }}bbb/p/div;const elem React.createElement(div, null, React.createElement(p, null, aaa), React.createElement(p, { style: { color: red } }, bbb) );const lisElem div{this.state.list.map((item, index) {return (span key{item.id}{item.name}/span);})} /div;const listElem React.createElement(div, null, (void 0).state.list.map((item, index) {return React.createElement(span, { key: item.id }, item.name);}) );合成事件 react 的事件不是原生事件 MouseEvent而是合成事件 SyntheticEventreact16 是挂载到 document 上的react17 开始是挂载到 root 上的事件处理函数交给合成事件事件冒泡到 document / root 上进行处理 出处https://coding.imooc.com/lesson/419.html#mid41943 合成事件的好处 更好的兼容性和跨平台比如 react-native全部挂载到 document / root上减少内存消耗避免频繁解绑方便事件的统一管理事务机制 出处https://coding.imooc.com/lesson/419.html#mid41943 React17 开始挂载到 root 组件上 - document 只有一个root 有多个有利于多个 react 版本共存例如微前端 setState 和 batchUpdate setState 主流程 出处https://coding.imooc.com/lesson/419.html#mid41943 异步左边分支非异步右边分支 isBatchingUpdates class ListDemo extends React.Componentconstructor(props) {// ...}render() {// ...}increase () {// 开始: 处于 batchUpdate// isBatchingiUpdates true this.setState({count: this.state.count 1});// 结束// isBatchingUpdates false} }class ListDemo extends React.Componentconstructor(props) {// ...}render() {// ...}increase () {// 开始: 处于 batchUpdate// isBatchingUpdates true setTimeout(() {// 此时 isBatchingUpdates 是 falsethis.setState({count: this.state.count 1});});// 结束// isBatchingUpdates false} }componentDidMount() {// 开始: 处于 batchUpdate// isBatchingUpdates true document.body.addEventListener(click, () {// 此时 isBatchingUpdates 是 falsethis.setState({count: this.state.count 1});console.log(count in body event, this.stae.count);});// 结束// isBatchingUpdates false }哪些能命中 batchUpdate 机制 生命周期和它调用的函数React 中注册的事件和它调用的函数React 可以“管理”的入口 transaction 事务机制 class ListDemo extends React.Componentconstructor(props) {// ...}render() {// ...}increase () {// 开始处于 batchUpdate// isBatchingUpdates true// 其他任何操作// 结束// isBatchingUpdates false} }出处https://coding.imooc.com/lesson/419.html#mid41943 transaction.initialize function() {console.log(initialize); };transaction.close function() {console.log(close); };function method() {console.log(abc); }transaction.perform(method);// 输出 initialize // 输出 abc // 输出 closereact 组件渲染过程 JSX 如何渲染为页面 初始化时候继承 props 和 生成 state通过 render() 函数 生成 vnodepatch(elem, vnode)通过 patch 函数将 vonde 更新到 dom 上 setState 之后如何更新页面 setSate(newState) - dirtyComponents可能有子组件通过 setState 产生新的 state存到 dirtyComponent 进行异步更新通过 render() 函数生成新的 vnodepatch(elem, vnode)再通过 patch 函数用 newVnode 去更新旧的 vnode react-fiber react 的 patch 被拆分为两个阶段 reconciliation阶段执行 diff 算法纯 js 计算commit 阶段将 diff 结果渲染成 dom 背景 js 是单线程的且和 dom 渲染共用一个线程当组件足够复杂组件更新时计算和渲染压力都很大同时再有 dom 操作需求比如动画、鼠标拖拽等那么将会卡顿 解决方案fiber fiber react 内部的运行机制开发者体会不到将 reconciliation 阶段进行任务拆分commit 无法拆分dom 需要渲染时暂停空闲时恢复通过 window.requestidleCallback 进行控制并非所有浏览器支持 FQA JSX 的本质是什么 jsx 的本质是 React.createElement 函数执行生返回 vnode。 react 组件更新渲染的过程。 初始化时候继承 props 和 生成 state通过 render() 函数生成 vnode再通过 patch 函数将 vonde 渲染成真实 dom通过 setState 修改产生新的 state触发 re-render 生成新的 vnode再通过 patch 函数用 newVnode 去更新旧的 vnode react 为什么要将 patch 过程拆分成 reconciliation 和 commit 两个阶段 因为js 是单线程的且和 dom 渲染共用一个线程当组件很复杂的时候组件更新时计算和渲染压力都很大同时再有 dom 操作需求比如动画、鼠标拖拽等那么将会卡顿
http://www.pierceye.com/news/59125/

相关文章:

  • 做一万个网站南郑县城乡建设局网站
  • 建设高校实验室教学网站的作用郴州新网交友
  • 机关 网站 建设方案法与家国建设征文网站
  • 做网站的要多少钱wordpress 用什么编辑器
  • 多国语言网站网站设计 网络推广的服务内容
  • 搜索引擎网站的结构买卖交易网
  • 自己做的视频可以同时上传到几家网站百度seo多久能优化关键词
  • 小x导航正品海口seo关键词优化
  • 网站转发wordpress中文版广告
  • 广州网站建设 讯度网络长沙网上房地产
  • h5网站动画怎么做为什么做彩票网站会被提示危险
  • 建设网站要点emloh转wordpress
  • 软件开发还是网站开发好做拍卖网站需要多少钱
  • 做a的视频在线观看网站wplounge wordpress主题
  • 网站建设方案设计心得泉州教育网站
  • 网站建设图片编辑浦口区网站建设
  • 做公众号链接的网站百度明令禁止搜索的词
  • 小吃店网站建设全国信用信息公示系统官网
  • yu网站建设哪里有做证
  • 黄岩做网站公司电话做网店运营新手入门教程
  • 如何做网站营销wordpress站点如何适应手机
  • 招聘网站怎么做介绍如何自学做网站
  • 17网一起做网店网站音箱厂家东莞网站建设
  • python网站开发快吗外包公司是做什么的
  • 网址和网站的区别怎么发现网站漏洞而做软件
  • wordpress自定义链接百度seo软件优化
  • 查网站是什么公司做的青岛经济新区建设局网站
  • 寒亭做网站网站策划专员所需知识
  • 网站建设数据库的选择如何做好品牌网站建设方案
  • 国外网站建设企业专业的网站建设公司