Facebook 最近发布了 React 15 的最终版,清理了许多 DOM 问题,提升了性能,增强了对 SVG 的支持。
在该版本中,React 在渲染 HTML 方面有两项重大更新:移除 data-reactid 属性和文本中不必要的<span>
元素。在早先的版本中,渲染的 DOM 元素可能是这样:
<div data-reactid=".0.0.5"> <div data-reactid=".0.0.5.0">Hello</div> </div>
而现在,同样的 HTML 片段却是这样的:
<div> <div>Hello</div> </div>
在某些纯文本元素中去除<span>
标签不仅可以让渲染的 HTML 更干净,也可以帮助修复开发者可能遇到过的非预期的 CSS 行为问题。
新版本完成了对所有 SVG 属性的支持,但是在候选(Release Candidate)版本的发布后,它发生了一些变化。在 GitHub 提交信息中, Paul O’Shannessy 称在团队讨论过如何让新用户更加方便地使用 React 之后对 SVG 白名单进行了更新:
候选版本让我们在 HTML 和 SVG 行为方面处于不一致状态。这样并不好,我们必须从 React 中学到很多教训,抛出更多的不一致是不好的。所以我们会暂时回退一步,但仍会通过之前的白名单继续对 SVG 提供完整的支持,并且我们会扩展这个白名单。
有意思的是,你会发现 O’Shannessy 编写了一个脚本,通过分析Mozilla Developer Network 找出完整的SVG 属性列表。
因为这是一次主要版本发布,所以做了一些突破性改变。除了新的DOM 渲染变化,在0.14 版本中引入的废弃的特性现在都已移除。
从v15.0 版本开始,使用TypeScript1.8.9 版本的用户不能再编译TSX 文件,这是由于新版本移除了一个废弃的特性。虽然有其他的变通方案, Facebook 还是恢复了 React.__spread API 并正式弃用了它。Dan Abramov 警示大家说,在下次主要发布中它将被弃用,因此任何用到这个API 的工具集必须停止使用它。在下次发布中会有对该TypeScript 问题的修复。
正如InfoQ 早先报道过的那样,这是React 首次使用新的版本命名方式。之前的版本编号形如 “0.14.7”。
根据最新的团队会议备忘录,社区将会看到更多小版本的发布和补丁,以及改进的变更日志。
查看英文原文: React v15 Released
感谢丁涛对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ , @丁晓昀),微信(微信号: InfoQChina )关注我们。
评论