V1 更新记录
v1.1.8 (2018/1/22)
v1.1.7 (2018/1/12)
v1.1.6 (2017/12/5)
- 修复了一个在
diffChildren 过程中没有 updater 的问题。
- 修复了一个 SVG 属性赋值的问题,这个问题曾导致值为数字 0 的属性被错误的赋值为空字符串。
- 修复了一个在
componentDidMount 和 componentDidUpdate 中调用 setState() 时重复渲染的问题。
- Server Side Render 中增加
componentWillMount 生命周期钩子。
- 移除 Server Side Render 中的
data-react-checksum 和 data-reactroot 属性。
- Server Side Render 支持
renderToNodeStream() 和 renderToStaticNodeStream()。
- 改善事件回调错误捕捉,现在错误信息会提供 QReact 报错的位置。
- 修复一个
diffProps() 函数的错误,这个错误曾经导致 props 没有更新。
- 修复一个 QReact 在 SSR 中的错误,QReact 中使用
XMLHTTPRequest 对象来判断浏览器版本,而在 node.js 中没有这个对象导致出错。
- 修改了
ReactDOMServer.js 的打包脚本,将 babelHelpers 包含在打包文件中,以便支持低版本 node.js。
- 在根目录增加了
server.js,以便支持 react-dom/server 的引用。
v1.1.5 (2017/11/21)
- 修复组件返回 Immutable.js 实例时无法正确渲染的问题。
- 修复 SVG 命名空间丢失的问题。
- 增加组件事件回调函数中的错误捕捉。
- 所有已废弃警告消息级别由
error 降至 warn。
v1.1.4 (2017/10/20)
- 增加一个专门给 IE 使用的
ReduxIE,使用 qreact/lib/ReduxIE 引入
- 修改
property 方法,仅部分属性通过赋值空字符串来删除
- 其他一些性能优化
v1.1.3 (2017/10/19)
- 抽象出一个
Updater 类,用于封装组件实例上的所有私有数据
- 抽象出一个
instantiateComponente 用于同时实例化有状态与无状态组件,从此再没有 mountStateless, updateStateless 方法
- 修正 checkbox 点一下会触发两次
onChange 的 BUG
- 添加
ReceiveComponent 检测机制,如果 context, props 一样,那么就不会执行 receive, render, update 等钩子
- 修改检测空对象的逻辑
- 简化任务调度系统的逻辑
- 添加
userRef 来优化 ref 在 cloneElement 中的创建及 detachRef 的比较,修正 flushUpdaters 中updater 对象的泄露问题(需要 clearArray 一下)
- 优化
diffChildren 的逻辑,防止出现 parentNode 等于 null 的情况(比如为文本节点取 firstChild)
- 简化
ControlledComponent 与 dispose 模块
v1.1.2 (2017/9/21)
- 修正
onChange 事件
- 重构
diffProps 模块的实现
- 支持组件的
isMounted 方法
- 添加
beforeRender, beforePatch, afterPatch 钩子
- 添加
lib/ReactInputSelection.js
v1.1.1 (2017/9/20)
- 修正
onChange 事件
- 重构
diffProps 模块的实现
- 支持组件的
isMounted 方法
- 重构虚拟 DOM 树的实现,与官方 React 保持一致,即
props.children 现在是多种形态,延迟到 diff 时才创建用于比较的 vchildren
- 修正 ref 机制,如果为字符串时,通过
createStringRef 方法将当前 ref,owner 传入,返回一个 curry 方法,在 cloneElement 时 createStringRef 创建的方法会再被整合到新 ref 方法的内部,确保旧的 owner 再次被更新
- 修正 getNs 方法的实现(原先是使用 hash 表进行穷举,但 svg 文档也有
a, script ,style 元素,导致无法区分)
- 用户在
componentDidUpdate 使用 setState 是不当操作,导致进入死循环,改用定时器减缓调用频率,防止页面卡死(官方 React 也存在类似的机制)
v1.1.0 (2017/9/7)
- 简化
createClass
- 修正
flattenHooks BUG:如果 hooks 中只有一个函数,就不用再包一层
createElement 里不对 children 进行处理,延迟到 diff 时才创建用于比较的 vchildren
- 修正
disposeElement BUG:如果存在 dangerouslySetInnerHTML 的情况,需要清空元素内部,不走遍历子虚拟 DOM 的分支
- 修正
diffProps, SVG 元素是区分大小写 如 viewBox preserveAspectRation
- 组件更新时,要检测
context 是否改变
- 增加事件对象的
persist 方法
- 修正
unstable_renderSubtreeIntoContainer 的回调 this 指向问题
- 修正
unmountComponentAtNode BUG:#text 改为 #comment
- 修正
cloneElement BUG
ref 改为在 createElement 里进行处理
v1.0.4 (2017/8/29)
v1.0.3 (2017/8/24)
disabled 的元素不能触发点击事件
- 修正
mouseenter / mouseleave 在 IE6-8 中的 BUG,涉及到 relatedTarget 的正确获取与 LCA处理
- 优化
setState 方法,虚拟 DOM 没有转换出对应的真实 DOM 时,不是能更新组件
- 简化
alignVnode 的逻辑,减少插入列队的生成
react/lib 中添加一些简用的外围模块,如 ReactComponentWithPureRenderMixin,shallowCompare,sliceChildren
v1.0.2 (2017/8/21)
event.originalEvent 更名为 event.nativeEvent
- 修正
polyfill中forEach 的 BUG
- 移除
scheduler 模块
- 移除
instanceMap 模块
- 修正
typeNumber 在 IE6-8 下的 BUG
eventSystem.addGlobalEventListener 更名为 eventSystem.addGlobalEvent
- 规避
insertBfore 在 IE8 下第二参数不能为 undefined 的问题
- 修正
ref 延迟执行的 BUG,组件所在的 vnode 如果有 ref 属性,那么它应该放到此组件的 __pendingRefs 数组中,而不是放在父组件的 __pendingRefs 数组,此外 __pendingRefs 数组里的元素由对象改成函数
- 确保组件在
componentDidMount 钩子执行 setState 后,所有回调应延迟到 componentDidUpdate 外执行
- 确保
mountComponent 中实例应该尽快保存到 vnode 中
- 修正
updateElement 方法中只执行一次 dangerouslySetInnerHTML 的 BUG
- 处理
mouseenter/mouseleave 的兼容问题
- 处理
focus/blur 的兼容问题
v1.0.1 (2017/8/7)
- 修复了在特定条件下调用
setState 时 IE 8 视图不更新的问题。
v1.0.0 (2017/7/28)