meta佛萨奇矩阵项目系统开发技术(源码搭建)魔豹联盟系统开发技术讲解

简介: meta佛萨奇矩阵项目系统开发技术(源码搭建)魔豹联盟系统开发技术讲解

配置 ES7 新增类功能
ES7 拟对 JavaScript 的类进行进一步的加强,比如属性可以不用在 constructor() 中设置,箭头函数的类方法自动绑定 this。但是这些新功能还处于 ES7 的 stage-2阶段,即起草阶段。

想要使用 ES 7 的新功能,需要使用 babel 的插件才能使用这些新功能。可以直接使用 babel-preset-stage-2@6.24.1 这个 npm 包,内容参见 Stage 2 preset。但是,stage-2 中的内容可能有些会被弃用,不确定性大,可以只使用其中关于类的功能。

这里是单独安装新增类功能的 babel 插件。

yarn add --dev babel-plugin-transform-class-properties@6.24.1
同时修改 .babelrc,把插件放进去。这样就可以使用 ES7 新增的类功能了。

{
"presets": ["env", "react"],
"plugins": ["transform-class-properties"]
}
ES7 新增类功能 1:属性可以定义在 constructor() 外面
原来类属性需要写在 constructor() 中,比如:

import React, { Component } from 'react';
import ReactDOM from 'react-dom';

class App extends Component {
constructor(props) {

super(props);
this.title = 'Hello in constructor'; 

}
render() {

return (
  <div>
    <h1>Title - {this.title}</h1>
  </div>
);

}
}

ReactDOM.render(, document.getElementById('root'));
ES7 可以不用把属性写在 constructor() 中。

在安装了上述 babel-preset-stage-2@6.24.1 插件以后,下面的代码仍然正确。
而且 props 可以直接使用,可以在 render() 方法中把 this.props 打印出来查看。
类属性变量前面不用写声明 const 或 let。调用属性仍然是 this.title 的形式。
class App extends Component {
title = 'Hello from outside';
render() {

console.log(this.props);
return (
  <div>
    <h1>Title - {this.title}</h1>
  </div>
);

}
}
这就意味着可以直接写 state,比如:

class App extends Component {
state = {

title: 'Hello from outside'

};
render() {

return (
  <div>
    <h1>Title - {this.state.title}</h1>
  </div>
);

}
}
ES7 新增类功能 2:箭头函数的类方法自动绑定 this
ES 6 中类方法需要绑定 this,即需要到 constructor() 中去调用 .bind(this) 才能用 this. 来调用,或者在调用处去绑定。

比如:实现一个点击标题,改变标题文字内容的功能的方法。ES 6 需要在 constructor 中绑定 this:

class App extends Component {
constructor() {

super()
this.changeTitle = this.changeTitle.bind(this);

}
state = {

title: 'Hello from outside'

};
changeTitle() {

this.setState({ title: 'changed' })

}
render() {

return (
  <div>
    <h1 onClick={this.changeTitle}>Title - {this.state.title}</h1>
  </div>
);

}
}
或者调用处去绑定 this:

class App extends Component {
state = {

title: 'Hello from outside'

};
changeTitle() {

this.setState({ title: 'changed' })

}
render() {

return (
  <div>
    <h1 onClick={this.changeTitle.bind(this)}>Title - {this.state.title}</h1>
  </div>
);

}
}

相关文章
|
安全 Linux Android开发
如何将Kindle电子书下载到电脑:技术流程与操作解析
随着数字阅读兴起,Kindle成为主流电子书平台。然而,Amazon的封闭生态和DRM限制,使用户难以灵活管理书籍。本文从技术角度出发,讲解如何合法下载Kindle电子书至电脑,包括使用Kindle for PC、USB导出及进阶方案(如Android模拟器、WINE环境)。同时介绍文件格式处理、自动化备份与阅读体验优化方法,并强调版权合规的重要性,助您构建个人数字图书馆。
4964 3
|
弹性计算 数据中心
阿里云服务器地域及可用区城市分布表及选择方法
阿里云服务器地域及可用区遍布全球,阿小云分享阿里云服务器地域和可用区分布表,以及云服务器地域可用区的选择方法
1342 0
阿里云服务器地域及可用区城市分布表及选择方法
|
前端开发 JavaScript Java
主流编程语言介绍
本篇文章在第一部分中说明了其中五个编程语言(Python,Java,JavaScript,Go,PHP)的作用概述,并在第二部分中给出了两个Python和PHP的学习网站,详情请看正文。
1199 3
主流编程语言介绍
|
IDE 物联网 开发工具
CH573第一篇:实现自拍杆蓝牙遥控器1
CH573第一篇:实现自拍杆蓝牙遥控器1
|
数据采集 弹性计算 运维
阿里云付费模式介绍:节省计划、预留实例券、抢占式实例区别及选择参考
在我们购买阿里云服务器时,可选的付费模式有包年包月、按量付费、节省计划、预留实例券和抢占式5种付费模式,满足长周期低成本以及短周期高弹性的计算要求,一般用户选择最多的是包年包月和按量付费,包年包月购买适合长期稳定的业务,购买周期越长,折扣越高,按量付费购买紧贴业务需求购买资源的付费方式,秒级计费,用多少花多少。本文主要为大家介绍节省计划、预留实例券、抢占式实例三种付费模式,以供参考。
|
资源调度 API 计算机视觉
OpenCV(图像处理)-基于Oython-滤波器(低通、高通滤波器的使用方法)
OpenCV(图像处理)-基于Oython-滤波器(低通、高通滤波器的使用方法)
613 0
|
算法 索引
【力扣】根据二叉树的前序和中序遍历结果还原该二叉树(以及后序和中序还原)
【力扣】根据二叉树的前序和中序遍历结果还原该二叉树(以及后序和中序还原)
703 0
【力扣】根据二叉树的前序和中序遍历结果还原该二叉树(以及后序和中序还原)
|
测试技术 BI Android开发
测试思想-流程规范 软件测试版本管理与版本发布
测试思想-流程规范 软件测试版本管理与版本发布
590 0
|
XML JSON 缓存
让UI忙碌的安卓Lottie动画渲染库(二)
上节我们讲述了Lottie开源库如何导入Android Studio但是,开源库是不断迭代的,所以我们也要及时更新
1051 0
|
缓存 前端开发 JavaScript
优化的艺术:提升网站性能的十大关键技术策略
【7月更文第9天】在当今快速发展的互联网时代,网站性能直接影响用户体验和业务转化率。一个高性能的网站不仅能够吸引并留住用户,还能在搜索引擎排名中占据有利位置。本文将深入探讨提升网站性能的十大关键技术策略,并提供实用的代码示例帮助开发者实施这些优化措施。
1032 3

热门文章

最新文章