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)