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

网站建设使用情况免费微信公众号素材网

网站建设使用情况,免费微信公众号素材网,移动网站如何做权重,上海百度网络推广React 基础巩固(二十五)——高阶组件 高阶函数 定义#xff1a;接收一个或多个函数作为输入 或 输出一个函数 的函数JS 中常用的map、filter、reduce都是高阶函数 高阶组件#xff08;Higher-Order Components, HOC#xff09; 定义#xff1a;高阶组件是参数为函数接收一个或多个函数作为输入 或 输出一个函数 的函数JS 中常用的map、filter、reduce都是高阶函数 高阶组件Higher-Order Components, HOC 定义高阶组件是参数为函数返回值为新组件的函数高阶组件本质是函数高阶组件并不是 React API 的一部分它是基于 React 的组合特性而形成的设计模式 import React, { PureComponent } from react;// 定义一个高阶组件 function hoc(Cpn) {// 1.定义一个类组件class NewCpn1 extends PureComponent {render() {return Cpn /;}}return NewCpn1;// 2.定义一个函数组件function NewCpn2(props) {}return NewCpn2; }class HelloWorld extends PureComponent {render() {return (divh1hello world/h1/div);} }const HelloWorldHOC hoc(HelloWorld);export class App extends PureComponent {render() {return (divHelloWorld /HelloWorldHOC //div);} }export default App;高阶组件的应用场景一—— 用户信息增强 构建用户信息增强高阶组件 import React, { PureComponent } from react; // 定义组件 给一些需要特殊数据的组件注入props function enhanceUserInfo(OriginCmp) {class NewComponent extends PureComponent {constructor() {super();this.state {userInfo: {name: outman,level: 123,},};}render() {return OriginCmp {...this.props} {...this.state.userInfo} /;}}return NewComponent; }export default enhanceUserInfo;使用高阶组件拦截组件并注入用户信息 import React, { PureComponent } from react; import enhanceUserInfo from ./enhance_props;const Home enhanceUserInfo(function Home(props) {return (h1Home: {props.name} - {props.level} - {props.age}/h1); });const Profile enhanceUserInfo(function Profile(props) {return (h1Profile: {props.name} - {props.level}/h1); });const Hello enhanceUserInfo(function Hello(props) {return (h1Hello: {props.name} - {props.level}/h1); });export class App extends PureComponent {render() {return (divHome age{888} /Profile /Hello //div);} }export default App;高阶组件的应用场景二—— 拦截并处理Context传参 构建 ThemeContext import { createContext } from react;const ThemeContext createContext();export default ThemeContext;构建 App.jsx通过 ThemeContext.Provider 传递参数给Product/ import React, { PureComponent } from react; import ThemeContext from ./context/theme_context; import Product from ./Product;export class App extends PureComponent {render() {return (divThemeContext.Provider value{{ color: red, size: 18 }}Product //ThemeContext.Provider/div);} }export default App;构建 Product.jsx, 在 Product 中通过 ThemeContext.Consumer 消费参数 import React, { PureComponent } from react; import ThemeContext from ./context/theme_context;// 直接使用上下文方式传递props参数 export class Product extends PureComponent {render() {return (divProduct:ThemeContext.Consumer{(value) {return (h2theme: {value.color} - {value.size}/h2);}}/ThemeContext.Consumer/div);} }export default Product;若每次都要采用上述方式通过ThemeContext.Consumer消费参数太过繁琐。故可以利用高阶组件进行处理。构建高阶组件 with_theme import ThemeContext from ./theme_context;function withTheme(OriginComponent) {return (props) {return (ThemeContext.Consumer{(value) {return OriginComponent {...value} {...props} /;}}/ThemeContext.Consumer);}; }export default withTheme;通过withTheme包装Product import React, { PureComponent } from react; import withTheme from ./context/with_theme;// 利用高阶函数方式,更简洁 export class Product extends PureComponent {render() {const { color, size } this.props;return (divProduct:{color} - {size}/div);} }export default withTheme(Product);高阶组件的应用场景三—— 登陆鉴权 构建登陆鉴权高阶组件 function loginAuth(OriginComponent) {return (props) {// 从localStorage 中获取 tokenconst token localStorage.getItem(token);if (token) {return OriginComponent {...props} /;} else {return h2请先登陆/h2;}}; }export default loginAuth; 构建 APP.jsx import React, { PureComponent } from react; import Cart from ./Cart;export class App extends PureComponent {constructor() {super();this.state {isLogin: false,};}loginClick() {localStorage.setItem(token, test token value);this.setState({isLogin: true,});}render() {const { isLogin } this.state;return (divbutton onClick{(e) this.loginClick()}登录/buttonCart //div);} }export default App; 构建Cart.jsx并用loginAuth包裹Cart进行鉴权处理 import React, { PureComponent } from react; import loginAuth from ./login_auth;export class Cart extends PureComponent {render() {return (divh2Cart/h2/div);} }export default loginAuth(Cart); 高阶组件的应用场景四—— 打印界面渲染时间 构建打印界面渲染时间高阶组件 import { PureComponent } from react;function logRenderTime(OriginComponent) {return class extends PureComponent {UNSAFE_componentWillMount() {this.beginTime new Date().getTime();}componentDidMount() {this.endTime new Date().getTime();const interval this.endTime - this.beginTime;console.log(当前页面${OriginComponent.name} 的渲染花费${interval} ms);}render() {return OriginComponent /;}}; }export default logRenderTime构建App.jsx import React, { PureComponent } from react import Detail from ./Detailexport class App extends PureComponent {render() {return (divDetail/Detail/div)} }export default App 构建Detail.jsx并通过logRenderTime拦截Detail组件打印其界面渲染时间 import React, { PureComponent } from react; import logRenderTime from ./log_render_time;export class Detail extends PureComponent {render() {return (divh2Detail Page/h2ulli数据列表1/lili数据列表2/lili数据列表3/lili数据列表4/lili数据列表5/lili数据列表6/lili数据列表7/lili数据列表8/lili数据列表9/lili数据列表10/li/ul/div);} }export default logRenderTime(Detail);
http://www.pierceye.com/news/86/

相关文章:

  • 15年做哪个网站致富简约网站程序
  • 做推广用的网站做公司网站需要多久
  • 建手机网站的必要性成品门户网站源码免费
  • 虚拟主机网站源码企业建设网站有哪些费用
  • 自己做一个app软件大概要多少钱长沙关键词优化新报价
  • 凡科网站 怎么开支付自己做网站怎么能被访问
  • 怎么建立公司网站?seo网站优化优化排名
  • 网站举报百色建设网站
  • 网站 位置导航wordpress原生app
  • 怎么查看自己网站是否被收录上海市城市建设管理局网站
  • 网站提供的链接合肥电脑网站建站
  • 国外室内设计网站排名泰安专业网站开发公司
  • win2003 做网站服务器品牌营销咨询机构
  • 免费企业推广网站菏泽网站建设菏泽众皓
  • 中山小榄网站慕课网站开发
  • 企业建站公司流程90设计网站是不是没有视频模板
  • 如何免费推广网站做问卷比较好的网站
  • 建设企业网站是静态还是动态好服装微信商城网站建设
  • 手机端微网站设计模板宁德市市长
  • 阿里云域名注册好了怎么做网站建网站需要哪些硬件
  • 网站后台ftp邢台做网站建设公司哪家好?
  • 地方网站还有得做吗网站建设的功能
  • 网站中点击链接怎么做淮北矿业 集团 工程建设有限责任公司网站
  • 建设项目环境影响备案网站wordpress添加搜索框
  • 昆明网站设计制造爱站网关键词挖掘机
  • 做医疗竞价网站网站开发系统架构图
  • 2015做微网站多少钱网页界面设计中一般使用的分辨率的显示密度是
  • 常州网站建设多少钱英国做电商网站有哪些
  • 可以做推送的网站wordpress国内视频网站
  • 做高清视频的网站做外贸网站教程