1.5.0(2019.1.21)

  • fix dist/Router.js中newHash变量不存在的BUG,改成to变量
  • fix require("react-dom/server") 找不到,无法别名的BUG
  • 重构React.createContext的实现

1.4.9(2018.11.17)

  • 重构小程序dispathEvent与dispatchEventQuick的实现
  • 重构 快应用toStyleQuick
  • 修复miniCreateClass 不能继承父类的类成员的BUG(PC中的React内部的组件继承用到它,及小程序的各种React的toClass方法的本体就是它)
  • 修复事件回调函数中调用e.preventDefault()后,e.defaultPrevented 仍然为 false
  • 修复用iframe打开一个新页面 document.adctiveElement 抛出异常,导致无法渲染的BUG
  • 修复 devtools 的两个问题
    • 点击 Unbatch 后开发者工具变为空白。
    • devtools 中 Text 节点的文字显示为 undefined。

1.4.8(2018.11.7)

  • 支持编译成支付宝小程序,通过在<anu-xx instanceUid={uuid}>这种机制解决支付宝小程序的实例生成顺序与React实例生成顺序不一致的问题
  • 修复快应用的文本节点不显示问题,自动为它添加标签包含它
  • 添加patchComponent机制
  • 修复样式表中的@assets别名问题

1.4.7(2018.10.29)

  • 微信小程序的组件机制由template改成自定义组件机制实现, 解决文本节点保留换行符的问题
  • 支持编译成百度智能小程序
  • 支持编译成快应用
  • 模板的开发目录改成source,生产目录视构建目标有所不同

1.4.6(2018.10.20)

  • 修复支付宝的事件对象不支持x,y属性的BUG ,解决方法pageX, pageY代替它们
  • 修复支付宝的自定义组件不在json.usingComponents引用它们,就不会在组件JS 中引入Component的BUG ,解决方法,在子类的json.usingComponents添加父类的引用
  • 修复无狀态组件的wxml, axml, swan生成错误,原因是两次进入render.exit方法,导致重复重成,第二次时jsx变成h方法,解决方法,通过modules.registerStatement是否为假值进行隔离
  • 修复中文unicode化的问题
  • 美化wxml, swan, awxml, ux文件,解决方法,引入 js-beautify模块

1.4.5(2018.10.15)

  • React.createContext 无法通过 Provider 传入数据
  • 修复ReactIE unstable_renderSubtreeIntoContainer BUG
  • 支持编译成支付宝小程序

1.4.4(2018.10.1)

1.4.3(2018.06.14)

  • miniCreateClass在老式IE下取不到名字默认使用IEComponent,
  • 修复createClass没有继续mixin的BUG
  • 移除option元素下面所有元素节点
  • 去掉NULLREF任务,添加DUPLEX任务,提前所有dom相关任务
  • 内置的路由器支持IE8的hashchange
  • updateContext改名updateContent,这是一直以来的笔误

1.4.2(2018.06.07)

  • add miniCreateClass, 并用它重构createClass, Unbatch, PureComponent, createContext
  • 添加一个WORKING任务,避免整棵树更新
  • 修复受控组件中option的IE8-的兼容BUG
  • 添加一个内置的路由器

1.4.1(2018.06.04)

  • 文本节点的内容直接用fiber.props代替
  • 修正input的拼音输入法BUG
  • 修正updateHostComponent中覆盖children对象的BUG
  • 修正createClass BUG
  • 修正SSR的BUG
  • 简化commitDFS循环

1.4.0(2018.05.30)

  • 测试全部改成jest
  • cWU钩子在调用时必须移除
  • 批量更新时,每个组件只能更新一次
  • 重构受控组件,它们会延后在batchedUpdate中执行,跑通所有测试
  • emptyElement不再递归移除,但会递归清空附于元素节点上的数据,以防内存泄露
  • 将createClass移出核心库
  • 重构错误边界,边界组件带有capturedValues,catchError, caughtError标识,并放进全局的boundaries
  • 重构contextStack,保证setState后,从当前组件的unmaskedContext中还原之前的栈

1.3.2(2018.04.16)

处理移动端下中文输入法的onChange事件BUG

1.3.1(2018.03.18)

  • React.Fragment支持key属性
  • 修正有生命周期的无状态组件的更新BUG
  • 实现React.createRef与React.forwardRef
  • 实现createResource与createSubscription这两个处理狀态的新包,放于lib下
  • var 集体更改为let const

1.3.0(2018.03.06)

  • 支持React16.3的createContext new API
  • 添加大量React.Fragment测试,修正一些边缘的BUG
  • 升级diff机制,由新旧vnode进行比较,改成fiber与新vnode进行比较,用新vnode的数据更新fiber与视图
  • 添加input[type=search]的onChange事件支持
  • 修正传送门在antd3.0的一个边缘BUG(重复插入两次,导致文本节点消失)
  • 属性名与方法名大改动,与React16的Fiber靠近
    • vnode.vtype —> fiber.tag
    • instance.__isStateless —> fiber._isStateless
    • updater —> fiber
    • updater.vnode —> fiber._reactInternalFiber
    • updater.willReceive —> fiber._willReceive
    • updater.children —> fiber._children
    • updater.isMounted() —> fiber._isMounted()
    • updater.insertCarrier —> fiber._mountCarrier
    • updater.insertPoint —> fiber._mountPoint
    • updater.parentContext —> fiber._unmaskedContext
    • getChildContext —> getUnmaskedContext
    • getContextByTypes —> 为getMaskedContext
    • CompositeUpdater.js —> ComponentFiber.js`
    • DOMUpdater.js —> HostFiber.js

1.2.9(2018.02.06)

  • 修正focus/blur事件的实现
  • 修正IE6-8下onchange因为是用onproperty实现,会引发无限循环的BUG
  • 修正diffProps无法修改input元素的type属性的BUG,改为在createElement方法中立即添加type属性

1.2.8(2018.02.02)

  • 简化focus/blur事件的实现,IE7-8的实现更加精简了
  • 修正wheel事件的属性计算方式,与官方保持一致
  • 为了支持react-hot-loader, vnode.updater.vnode更名为vnode.updater._reactInnerFiber, vtype更名为tag
  • 测试工具与调试工具进行了部分属性调整

1.2.7(2018.02.01)

  • 修正componentWillReceiveProps 的执行条件
  • 支持children为函数
  • 修改_disposed开关的位置
  • 修正焦点系统,它只会在browser的insertElement, removeElement中执行
  • 修正focus/blur事件的绑定方式,捕获时需要屏蔽内部的事件
  • 修正insertElement中多执行一次无效的DOM插入操作及CompositeUpdatet.hydrate的insertElement传参错误

1.2.6(2018.01.26)

修正 unstable_renderSubtreeIntoContainer 中context对象的错误指向

1.2.5(2018.01.23)

  • 修正受控组件 radio的BUG,它导致无法修改value

1.2.4(2018.01.22)

  • 解决移动端scroll事件

1.2.3(2018.01.12)

  • 解决移动端点击事件

1.2.2(2018.01.05)

  • 解决PropTypes的share问题
  • 修复utils的inherit BUG
  • 添加后端渲染的renderToNodeStream支持
  • Component添加isReactCompent方法,增强对第三方的支持

1.2.2(2017.12.30)

  • cloneElement需要处理disposed元素
  • cloneElement 对于props的虚拟DOM进行复制
  • 设置属性的时机提前

1.2.1 (2017.12.27)

  • 优化fiberizeChildren的性能
  • 修复受控组件在textarea, radio的BUG,将受控事件放到用户事件后集中执行
  • 添加焦点系统的支持(全局focus,blur事件提前监听,移除添加节点的Refs.nodeOperate开头)
  • 解决多次引入React时,事件系统的option.async有问题的BUG
  • 简化createPortal的实现
  • 支持React16.2的Fragment语法糖

1.2.0(2017.12.17) 支持React16

  • 重构findDOMNode,遇到注释节点返回null
  • 支持React组件返回任何数据类型,如数组,字符串,数字,布尔,但对于undefined, null, boolean不会生成真实DOM
  • 支持componentDidCatch钩子与整个错误边界的逻辑
  • 支持createPortal
  • 分离出Vndoe模块,并且附带其节点关系属性(return, sibling, child),
    • return相当于之前的_hostParent,
    • sibling相当于nextSibling,
    • child相当于firstChild,
  • 模仿React16,使用stateNode属性代替旧有的_hostNode与_instance。
  • React.Children与flattenChilden底层依赖的方法由_flattenChildren改为operateChildren,让其更具通用性,flattenChilden更名为fiberizeChildren,产出一个带链表结构的数组
  • 新的架构:元素虚拟DOM与组件虚拟DOM都有自己的更新对象,简化匹配算法
  • 简化Refs模块
  • 修复更新虚拟DOM时,namespaceURI丢失的BUG
  • componentDidUpdate现在只有两个参数,lastProps与lastState

1.1.4(2017.10.20)

  • 修正flushUpdaters中updater对象的泄露问题(需要clearArray一下)
  • 优化diffChildren的逻辑,防止出现parentNode等于null的情况(比如为文本节点取firstChild)
  • 简化ControlledComponent与dispose模块
  • 处理updateElement方法中两个虚拟DOM的引用一样时,调用flattenChildren时,旧的vchildren丢失的情况
  • 移除Refs中的createStringRef,createInsanceRef,添加fireRef,重构detachRef,clearRefs,cloneElement,createElement有关ref的部分,尽量减少闭包的应用
  • 将updateQueue数组移出所有diff方法,合并到调度器中

1.1.3(2017.10.08)

  • 抽象出一个Update类,用于封装组件实例上的所有私有数据
  • 抽象出一个instantiateComponente用于同时实例化有状态与无状态组件,从此再没有mountStateless, updateStateless方法
  • 修正checkbox点一下会触发两次onChange的BUG
  • 添加ReceiveComponent检测机制,如果context,props一样,那么就不会执行receive, render, update等钩子
  • 修改检测空对象的逻辑
  • 简化任务调度系统的逻辑

1.1.2(2017.10.01)

  • 修正 onChange 事件
  • 重构 diffProps 模块的实现
  • 支持组件的isMounted方法
  • 添加beforePatch , afterPatch钩子
  • 添加lib/ReactInputSelection.js
  • 统一所有操作虚拟DOM的方法的参数(mountXXX, updateXXX, alignXXX系列)

1 第一个参数为旧真实DOM或旧虚拟DOM2 第二个参数为新虚拟DOM3 第三个参数为父虚拟DOM(可能不存在,那么后面直接跟第四,第五)4 第四个参数为上下文对象5 第五个参数为任务调度系系统的列队

  • 使用全新的方式获取元素的命名空间
  • 上线全新的节点排序算法(diffChildren)
  • renderByAnu在全局渲染后应该置空CurrentOwner.cur, 防止影响其他虚拟DOM
  • 完善createStringRef方法,应该能抛错与删除无用数据
  • 上线全新的任务调度系统
  • 重构unmountComponentAtNode方法
  • 添加对两个虚拟DOM的引用都相同的情况下,检测子组件的contextType决定是否更新的策略
  • 无状态组件支持模块模式(返回一个带生命周期钩子的纯对象,这些方法会像有状态组件那样被调用)
  • 放松shouldComponentUpdate的限制,返回任何假值都阻止子孙更新
  • 修正ref的更新方式
  • shouldComponentUpdate返回假值时,当前的虚拟DOM应该吸纳旧虚拟DOM的有用信息

1.1.1(2017.9.9)

  • 简化createClass
  • 修正flattenHooks BUG, 如果hooks中只有一个函数,就不用再包一层
  • 重构虚拟DOM树的实现,与官方React保持一致,即props.children现在是多种形态,延迟到diff时才创建用于比较的vchildren
  • 修正disposeElement,如果存在dangerouslySetInnerHTML的情况,需要清空元素内部,不走遍历子虚拟DOM的分支
  • 修正diffProps, SVG的元素是区分大小写 如viewBox preserveAspectRation
  • 组件更新时,要检测context是否改变
  • 为事件对象实现persist方法
  • 修正unstable_renderSubtreeIntoContainer的回调的this指向问题
  • 修正unmountComponentAtNode BUG, #text改为 #comment
  • 修正cloneElement BUG, 确保children与_owner正确传入
  • 修正ref机制,如果为字符串时,通过createStringRef方法将当前ref, owner传入,返回一个curry方法,在cloneElement时createStringRef创建的方法会再被整合到新ref方法的内部,确保旧的owner再次被更新
  • 修正getNs方法的实现(原先是使用hash表进行穷举,但svg文档也有a, script ,style元素,导致无法区分)
  • 用户在componentDidUpdate使用setState是不当操作,导致进入死循环,改用定时器减缓调用频率,防止页面卡死(官方React也存在类似的机制)

1.1.0(2017.08.28)

  • disabled的元素不能触发点击事件
  • 修正mouseenter/mouseleave在IE6-8中的BUG,涉及到relatedTarget的正确获取与LCA处理
  • 简化alignVnode的逻辑,减少插入列队的生成
  • 重构setStateImpl,
  • _component更名为component, _currentElement更名为current
  • react/lib中添加一些简用的外围模块,如ReactComponentWithPureRenderMixin,shallowCompare,sliceChildren

1.0.8(2017.08.18)

  • 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的兼容问题

1.0.7(2017.07.29)

  • 处理用户在render方法 return this.props.children 的情况,需要将数组转换为单个虚拟DOM
  • 处理两个组件虚拟DOM都没有实例化的情况
  • 只回收文本节点
  • 支持mouseenter/mouseleave及重构事件系统

1.0.6(2017.07.24)

  • 重新支持chrome DevTools
  • 添加对Immutable.js的支持
  • 修复用户在componentWillUpdate/shouldComponentUpdate/componentDidUpdate钩子中执行setState引发死循环的BUG

1.0.5(2017.07.14)

  • 优化scheduler机制
  • 实现对createFactory的支持
  • 优化dispose模块
  • 使用typeNumber代替typeof关键字,减少打包后的体积

1.0.4 (2017.07.07)

  • 修正 unable to preventdefault inside passive event listener due to target 的错误处理,这是chrome51+, 为了提高性能,默认对touchmove/mousemove/mousewheel事件禁用preventDefault方法引发的问题
  • 销毁元素节点,彻底清除_component与__events引用
  • 取消refs.xxx = null 操作,确保组件销毁后可能还进行动画,这时会有DOM操作不会报错
  • 对props.children进行增强,支持更多合法的类型
  • 实现对createClass的支持
  • 实现对mixin的支持

1.0.3 (2017.07.25)

  • 实现unstable_renderSubtreeIntoContainer, findDOMNode, isValidElement方法
  • 实现对Children的完整支持 (only, count, forEach,map, toArray)
  • 实现focus, blur, wheel的兼容处理,
  • 修正更新组件时,没有添加defaultProps的BUG
  • 修正diffProps一些错别字
  • 实现事件对象pagex,pageY,which,currentTarget的兼容
  • 修正用户在componentWillMount时调用 setState引发的BUG
  • cloneElement应该能处理数组并取出其第一个元素进制复制
  • 取消事务机制,改成调度任务

1.0.2 (2017.06.20)

  • 兼容IE,实现对应的polyfill文件
  • 实现对IE6-8的change, input, submit事件
  • 添加对select.value的处理

1.0.1 (2017.06.09)

  • 支持cloneElement

1.0.0 (2017.06.05)

  • 发布anu