写点什么

React 0.14 候选版发布,添加包分割,Refs 语法等新特性

2015 年 9 月 17 日

两个月以前,React 0.14 发布 Beta 版,目前,该项目正式发布候选(RC)版。React 0.14 将强制分离渲染引擎与关注点,简化无状态组件的声明,添加新语法 refs

React 0.14 将被分割为两个包:reactreact-dom。这一决定旨在强制分离 React 和它的 DOM 渲染引擎。分离后的react包含各种创建组件的方法,例如:React.createElementReact.createClassReact.Component、React.PropTypesReact.childrenreact-dom包含各种渲染方法,例如:ReactDOM.renderReactDOM.unmountComponentAtNodeReactDOM.findDOMNodereact-dom/server提供对服务器端组件渲染功能的支持。

Facebook 尝试通过这次分离实现两个目标:

  • 允许开发者自定义 DOM 渲染引擎;
  • 允许跨渲染引擎共享组件,例如:react-dom[react-native][3][react-art][4][react-canvas][5]以及[react-three][6]

第二个主要变化是,React 0.14 为内建的 DOM 节点引入了关注点引用(concerns refs)。在 React 0.13 中,如果你想通过引用(ref)访问一个节点属性,需要这样写:

复制代码
const nameNode = this.refs.name.getDOMNode();

在 React 0.14 中,内建 React 节点的引用是节点本身,所以代码可以简化为:

复制代码
const nameNode = this.refs.name;

引用节点的唯一作用是访问它的 DOM 节点,基于这个理念,这次的改变只针对内建节点,不会影响用户自定义的节点。与此同时,.getDOMNode()方法也被弃用并使用ReactDOM.findDOMNode进行替代。为此,Facebook 发布了一个名为 codemod 的脚本来帮助开发者完成这一转变。

此外,React 0.14 也在尝试简化有其它组件组成的无状态组件的声明方式,这与 React 0.13 启动时 Facebook 工程师所陈述的如出一辙:

不幸的是,我们不会在 React 中针对 ES6 类语法提供 mixin 支持。那与我们使用符合语言习惯的 JavaScript 的观念相违背。[…] 我们同样会开始设计一个新的组合 API,可以不借助 mixin 简化常见的任务。

React 0.14 中的新语法将允许使用props作为参数并返回渲染的元素:

复制代码
var Aquarium = (props) => {
var fish = getFish(props.species);
return <tank>{fish}</tank>;
};

React 0.14 还会弃用一些方法,例如:this.getDOMNode()setPropsreplaceProps等。此外,React 0.13 中所有的弃用警告全部转变为错误抛出。

可以通过npm安装 React 0.14:

复制代码
npm install --save react@0.14.0-rc1
npm install --save react-dom@0.14.0-rc1

也可以访问 React 的 Github 仓库通过 bug tracker 来提交 issue。

查看英文原文: React 0.14 Hits Release Candidate, Adding New Package Split, Refs Syntax, and More

2015 年 9 月 17 日 19:002024
用户头像

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

关注

评论

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

详解 Flink 容器化环境下的 OOM Killed

Apache Flink

flink 流计算

技术干货丨隐私保护下的迁移算法

华为云开发者社区

迁移

可用性、可维护性、可靠性有什么区别?

禅道项目管理

DevOps 可用性 质量保障 可靠性

自学编程的4大误区,你中招了吗?

田维常

程序员

传统产业高成本低效率该怎么解决?物联网打辅助稳赚上千万!

一只数据鲸鱼

物联网 数据可视化 绿色交通 工业节能 绿色农业

再见 2020!Apache RocketMQ 发布 4.8.0,DLedger 模式全面提升!

阿里巴巴云原生

阿里云 开发者 云原生 存储 消息中间件

加密数字货币钱包系统软件开发|加密数字货币钱包APP开发

开發I852946OIIO

系统开发

Java多线程并发控制工具信号量Semaphore,实现原理及案例

码农架构

Java Java并发 并发编程 后端

如何在 OpenShift 中运行 Collabora Office

东风微鸣

openshift

Filebeat同步写位点文件引发的磁盘IO问题

秦宝齐

应用案例| 基于Volcano 的锐天大规模离线高性能计算生产实践

华为云原生团队

云计算 AI 云原生 批量计算 大数据平台

VoltDB成功入选CNCF Landscape云原生数据库全景图

VoltDB

云原生 cncf VoltDB 分布式内存数据库

年底了,你的数据库密码安全吗

Simon

MySQL 数据库

uni-app实现实时消息SDK插件

anyRTC开发者

uni-app 音视频 WebRTC 跨平台 sdk

Vue 3 组件开发:搭建基于SpreadJS的表格编辑系统(功能拓展)

Geek_Willie

单例设计模式

andy

HTTP 请求流程

大导演

浏览器 HTTP 前端进阶训练营

Java多线程并发控制工具CountDownLatch,实现原理及案例

码农架构

Java 并发编程 后端

比易宝betBEB平台获278万美元约合1807万元融资

DT极客

探索压测奥妙

ninetyhe

分布式系统 压力测试 微服务治理 性能调试

算法学习手册

田维常

算法

使用PG_SHOW_PLANS监控PostgreSQL执行计划

PostgreSQLChina

数据库 postgresql 开源

一周信创舆情观察(2020.12.28~2021.1.3)

统小信uos

做运维,送你7个常用的服务器资源监控工具

华为云开发者社区

工具 监控 内存 服务器 系统

IoT爆发前夕,企业架构要面对哪些变革?

京东科技开发者

物联网

架构师训练营-第二周作业

Mark

腾讯高工亲授“MySQL学习方法”【思维导图+学习笔记+实战文档+面试题库】让你站在数据库领域的顶峰 笑傲江湖!

比伯

Java 编程 架构 面试 计算机

在线自习室场景爆发,在线教育平台用户时间争夺战打响

ZEGO即构

ROMA Compose:ROMA的新武器

华为云开发者社区

数据 API ROMA

公安合成作战系统开发方案,重点人员大数据分析平台建设

WX13823153201

公安合成作战系统开发

架构师训练营第十三周

我是谁

架构师训练营第 1 期

4月17日 HarmonyOS 开发者日·上海站

4月17日 HarmonyOS 开发者日·上海站

React 0.14候选版发布,添加包分割,Refs语法等新特性-InfoQ