更新记录 #

v1.1.6-beta.2 (2017/11/23) #

  • Server Side Render 中增加 componentWillMount 生命周期钩子。

v1.1.6-beta.1 (2017/11/23) #

  • 移除 Server Side Render 中的 data-react-checksumdata-reactroot 属性。

v1.1.6-beta.0 (2017/11/23) #

  • 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 的比较,修正 flushUpdatersupdater 对象的泄露问题(需要 clearArray 一下)
  • 优化 diffChildren 的逻辑,防止出现 parentNode 等于 null 的情况(比如为文本节点取 firstChild
  • 简化 ControlledComponentdispose 模块

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 方法,在 cloneElementcreateStringRef 创建的方法会再被整合到新 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) #

  • 简化 createClass

v1.0.3 (2017/8/24) #

  • disabled 的元素不能触发点击事件
  • 修正 mouseenter / mouseleave 在 IE6-8 中的 BUG,涉及到 relatedTarget 的正确获取与 LCA处理
  • 优化 setState 方法,虚拟 DOM 没有转换出对应的真实 DOM 时,不是能更新组件
  • 简化 alignVnode 的逻辑,减少插入列队的生成
  • react/lib 中添加一些简用的外围模块,如 ReactComponentWithPureRenderMixinshallowComparesliceChildren

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 方法中只执行一次 dangerouslySetInnerHTMLBUG
  • 处理 mouseenter/mouseleave 的兼容问题
  • 处理 focus/blur 的兼容问题

v1.0.1 (2017/8/7) #

  • 修复了在特定条件下调用 setState 时 IE 8 视图不更新的问题。

v1.0.0 (2017/7/28) #

  • 发布 QReact 正式版。