【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

React 支持了 ES6 Classes,听听他们怎么说

  • 2015-03-23
  • 本文字数:1372 字

    阅读完需:约 5 分钟

React 是 Facebook 开源的构建反应式用户界面的 JavaScript 库,Facebook 用它构建了 Instagram app 以及 Facebook 自身的一部分功能。

React v0.13 的声明中,Facebook 的开发者 Ben Alpert 介绍了 ES6 classes 的新特性,这些特性可以协助开发者编写更有弹性的组件,与此同时,他们也打算用这些新特性代替React.createClass

Sebastian Markbåge 在 React v0.13.0 Beta 1 的声明中提供了更多有关 ES6 的信息。

Markbåge 说:

JavaScript 原本没有内建的类系统,包括我们在内的每一个流行的框架都构建了自己的类系统。这意味着你需要对每一个框架语法上细微差异都要了如指掌。

我们认为我们的职责并不是设计一个类系统,我们只想使用符合 JavaScript 标准的方式去创造类。

使用 React 0.13.0 意味着你不再需要使用 React.createClass 来创建 React 组件,如果你有一个转译器,那么你现在就可以上手 ES6 classes,你可以使用我们在 react-tools 里提供的转译器,不过你需要启用使用 harmony 的选项:jsx --harmony。

复制代码
class HelloMessage extends React.Component {
render() {
return <div>Hello {this.props.name}</div>;
}
}
React.render(<HelloMessage name="Sebastian" />, mountNode);

虽然 getInitialState 还不尽如人意,但其它大多数的 API 应该可以满足你的期望,我们认为,只使用简单的实例属性是标明一个类的特定状态的惯用手法。同样的,getDefaultProps 和 getDefaultProps 也只是构造器的属性而已。

复制代码
export class Counter extends React.Component {
constructor(props) {
super(props);
this.state = {count: props.initialCount};
}
tick() {
this.setState({count: this.state.count + 1});
}
render() {
return (
<div onClick={this.tick.bind(this)}>
Clicks: {this.state.count}
);
}
}
Counter.propTypes = { initialCount: React.PropTypes.number };
Counter.defaultProps = { initialCount: 0 };

React v0.13 的其它部分也有翻天覆地的变化,包括 React Core、React Tools 和 JSX。

React Core 中的新特性有:新的顶级 API、React.findDOMNode(component) 和 React.cloneElement(el, props)。值得注意的是现在用 React.findDOMNode(component) 代替了 component.getDOMNode(),在未来会启用更多的模式。根据声明的介绍,React.cloneElement 被用以拷贝 React 的元素(elements),这与 React.addons.cloneWithProps 相似,但是它保持 key 和 ref 不变,并且不会自动合并 style 和 className。

对于 React Tools 来说,在 jsx 命令行中新加入了–target 选项,可以允许用户指定 React 所使用的 ECMAScript 的版本。

React 0.13 给 JSX 带来了突破性的改变,以前在一个元素内使用 > 或者}会被识别为一个字符串,由于 JSX 变更了解析的方式,现在会将其视为语法错误。Alpert 指出:“npm 中有一个名为 jsx_orphaned_brackets_transformer 的包,你可以用它来寻找、修复 JSX 代码中潜在的问题”。

React 0.13 现在可以下载了。

查看英文原文: React Introduces Support for ES6 Classes


感谢夏雪对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

2015-03-23 05:1113361
用户头像

发布了 63 篇内容, 共 131.7 次阅读, 收获喜欢 38 次。

关注

评论

发布
暂无评论
发现更多内容

镭速传输是如何管理大文件跨国传输的

镭速

捷报频传 | 博睿数据签约华润集团,携手共进共创共赢

博睿数据

可观测性 智能运维 博睿数据 签约 华润集团

Oracle ASM磁盘组配置、日常运维、故障处理等操作资料汇总

墨天轮

数据库 oracle asm 磁盘管理

CleanMyMac4.20汉化免费版Mac清理工具

茶色酒

CleanMyMac4.20

vivo全球商城:库存系统架构设计与实践

vivo互联网技术

系统架构 电商 库存

基于 Flink 流计算实现的股票交易实时资产应用

Apache Flink

大数据 flink 实时计算

【YonBuilder 移动开发】关于创建 App 是否需要 AVM 的经验分享

YonBuilder低代码开发平台

DTO、VO、BO、PO、DO的用法区别,居然这么多人搞不清楚.....

程序知音

AI脸部美容,一键让你变瘦变美变老变年轻

极客飞兔

php Python AI PaddleGAN 人脸编辑

万字分享:以Code Review 最佳实践,解答降本增效 or 增加成本之问(上)

极狐GitLab

DevOps Code Review 代码安全 代码评审 安全左移

研发效能怎么分析?方法论、模型、误区都在这里了

思码逸研发效能

研发效能

云图说丨Astro Canvas一站式数据可视化开发,分钟级构建业务大屏

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 3 月 PK 榜

这几个群,程序员可千万不要进!

禅道项目管理

项目管理 程序员 项目管理工具

【实用类】测试使用ChatGPT开发shell脚本 | 社区征文

瀛洲骇客

ChatGPT

不用写代码就能开发小程序,浅看产品经理是怎么做到的?

这我可不懂

低代码 低代码平台 JNPF

并发编程详解:从理论基础到案例实战(十三个工具类,十大设计模式)

程序知音

Java 并发编程 设计模式 java架构 后端技术

首届玄铁 RISC-V 生态大会上海举办 龙蜥操作系统持续深度参与标准共建

OpenAnolis小助手

芯片 risc-v 龙蜥操作系统 平头哥 生态大会

FL Studio21最新版DAW数字音频工作站

茶色酒

FL Studio FL Studio 21

联合解决方案 | 亚信科技AntDB数据库携手浪潮K1 Power赋能关键行业数字化转型,助力新基建

亚信AntDB数据库

数据库 AntDB 国产数据库 AntDB数据库 企业号 3 月 PK 榜

web3 NFT代币铸造盲盒抽奖质押dapp游戏系统开发智能合约技术分析

开发微hkkf5566

MQTT 5.0消息发布流程

EMQ映云科技

物联网 IoT mqtt QoS 企业号 3 月 PK 榜

思码逸任晶磊:ChatGPT 时代的软件研发数据与效能提升

思码逸研发效能

机器学习 研发效能 ChatGPT

从“13天”到“0天”延时,揭秘火山引擎DataLeap SLA保障最佳实践

字节跳动数据平台

大数据 数据治理 数据研发 企业号 3 月 PK 榜

柏拉图会反对ChatGPT吗?~深度好文| 社区征文

李韧

人工智能 ChatGPT

隔离级别+事务+连接池+锁

hasWhere

数据标注工具,多维度体验优化|ModelWhale 版本更新

ModelWhale

人工智能 标注 标注工具 团队协同 模型管理

“鼎新杯”案例精选 | 中国联通数字化研发低代码平台为一线赋能

信通院IOMM数字化转型团队

低代码 数字化转型 中国联通

GPU推理服务性能优化之路 | 得物技术

得物技术

Python

你没有必要完全辞去工作

宇宙之一粟

创业 个人成长 思维方式 工作 打工人

基于Mindspore2.0的GPT2预训练模型迁移教程

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号 3 月 PK 榜

如何通过Java程序加密或者解密PDF文档

Geek_249eec

Java PDF

React支持了ES6 Classes,听听他们怎么说_JavaScript_James Chesters_InfoQ精选文章