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)
- 修改 getWinodw BUG
- 支持编译成微信小程序
- 为减少小程序的体积,render中的React.createElement会改用h变量进行替换
- 内置三套模板
https://github.com/RubyLouvre/anu/issues/133
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或旧虚拟DOM
2 第二个参数为新虚拟DOM
3 第三个参数为父虚拟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