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

江苏省工程建设协会网站小型营销企业网站建设策划

江苏省工程建设协会网站,小型营销企业网站建设策划,安徽建设局网站,电商平台正在建设中网站页面提示高级特性 1#xff0c;protals#xff08;传送门#xff09;#xff1a;将子组件渲染到父组件之外。 实例场景#xff1a;父组件的儿子是Modal组件#xff0c;使用fixed定位虽然样式看着是在父组件之外了#xff0c;但是打开控制台查看元素#xff0c;Modal相…高级特性 1protals传送门将子组件渲染到父组件之外。 实例场景父组件的儿子是Modal组件使用fixed定位虽然样式看着是在父组件之外了但是打开控制台查看元素Modal相关的html还是嵌套在idApp里面。由于fixed定位的元素最好是直接放到body里具有更好的兼容性所以需要使用protals让modal渲染到body下 import ReactDom from react-dom;class Test extends from React.component{render(){return ReactDom.createPortal(div classNamemodal这是一个模态框/div, document.body)} } 常用场景 fixed浏览器兼容性父组件z-index太小父组件设置了overflow:hidden  2context多层级组件传值 场景使用props层层传递太啰嗦使用redux太繁重。 那么可以选择使用context或者recoil // A.jsx const ThemeContext React.creatContext(light)class A extends React.Component{this.state { theme: }render(){ThemeContext.Provider value{this.state.theme} B /button onClick{()setState({val:hh})} /button/ThemeContext.Provider} }// B.jsxclass B extends React.Component{render(){divC //div} }// C.jsxclass组件class C extends React.Component{const { theme } this.context;static contextType ThemeContext render(){div{theme}/div} }C.contextTypeThemeContext // 如果不这样写需要在C组件中将注释打开// C.jsx 函数组件 function C (){ return ThemeContext.Consumer {themetheme} /ThemeContext.Consumer } 性能优化 1异步加载组件 组件比较大import()或者路由懒加载React.LazyReact.Suspense import()正常的组件会随着整个项目打包成一个MD5.js的文件但是异步加载的组件会单独打包成一个md5.js文件 React.Lazy()相当于一个构造函数将引入的组件作为输入封装后输出一个异步的组件 React.Suspense const Dom React.lazy(()import(../bigComponent)class App extends from React.component{render(){return React.Suspense fullback{div...loading/div}Dom //React.Suspense} } 2scu memo配合useMemouseCallback使用) 比如以下结构代码 // index.tsx const Index(){ const [val,setVal]useState(1); const [b,setb]useState(hh); const add ()setVal(val1); const callbackFn ()alert(hi); return divbutton onClick{add}按钮{val}/buttonB b{b} callbackFn{handle} / /div }// B.tsx const B (b,callbackFn){ console.log(我又被执行了一遍这就是刷新了这个组件) return div{b} /div } 每次点击按钮B组件都会打印那句话这就说明B组件的代码又被执行了一遍进行重复渲染。为了解决这个重复渲染变量用useMemo封装起来函数用useCallback封装起来 // index.tsx const Index(){ const [val,setVal]useState(1); const [b,setb]useState(hh); const add ()setVal(val1);const bprops useMemo(()b,[b]); const callbackFn useCallback(()alert(hi),[]);return divbutton onClick{add}按钮{val}/buttonB b{b} callbackFn{handle} / /div }// B.tsx const B (b,callbackFn){ console.log(我又被执行了一遍这就是刷新了这个组件) return div{b} /div }
http://www.tj-hxxt.cn/news/227511.html

相关文章:

  • 网站集群建设pptwordpress软件推荐
  • 企业免费自助建站平台照片做成视频的软件
  • 自媒体网站源码模板dedewordpress动
  • 网站建网站建设seo帮帮您惠州百度seo找谁
  • 网站建设预算策划网站开发收税
  • 四川住房和城乡建设厅网站打不开毕业季网站如何做网页
  • 网站优化排名优化上海精品网站建设
  • 福州网站建设策划动漫制作技术专业入门
  • 水安建设集团网站wordpress 更改目录
  • 我有网站 怎么做淘宝推广的黄骅做网站的电话
  • 建设网站有什么原则网易企业邮箱改密码
  • 网站建设步骤域名备案中网站可以开通
  • 芜湖网站优化软文广告经典案例300
  • 网站建设费用固定资产怎么入设计好看的企业网站
  • 旅游网站开发设计文档购买网络商城系统
  • 网络上建个网站买东西多少钱wordpress个人博客主题2019
  • 软件公司做网站兰州网络推广的平台
  • 静态网站做等级保护网站建设必会的软件有哪些
  • 哪个在家做兼职网站比较好ui设计是什么含义
  • 优化手机访问网站速度哈尔滨网站搜索优化公司
  • 地方美食网站开发意义北碚网站建设公司
  • 合肥做网站便宜建站网址平台
  • 网站如何做延迟加载中国企业100强排名
  • 北海网站设计公司镇江外贸网站建设
  • 潍坊路通工程建设有限公司网站ps如何做网站轮播图
  • 网站开发书籍国内便宜机票网站建设
  • 怎么在服务器上部署网站微商城登录
  • 上海网站建设 迈网站怎么做301重定向
  • joomla网站如何加入会话功能深圳推广不动产可视化查询
  • 兰州有制作网站网站建设实习报告范文