@cicada/render
Advanced tools
Comparing version 1.1.22-alpha8 to 1.1.22-alpha9
@@ -45,2 +45,3 @@ 'use strict'; | ||
exports.checkPlainValue = checkPlainValue; | ||
exports.isDebug = isDebug; | ||
@@ -336,2 +337,6 @@ var _isPlainObject = require('lodash/isPlainObject'); | ||
return true; | ||
} | ||
function isDebug() { | ||
return typeof window !== 'undefined' && window.cicadaEnv === 'DEBUG'; | ||
} |
@@ -283,2 +283,7 @@ 'use strict'; | ||
} | ||
if ((0, _common.isDebug)()) { | ||
/* eslint-disable no-console */ | ||
console.info('DidMount: ' + displayName + '(' + this.getResolvedRootPath() + ')'); | ||
/* eslint-enable no-console */ | ||
} | ||
} | ||
@@ -311,4 +316,21 @@ }, { | ||
} | ||
if ((0, _common.isDebug)()) { | ||
/* eslint-disable no-console */ | ||
console.info('UnMount: ' + displayName + '(' + this.getResolvedRootPath() + ')'); | ||
/* eslint-enable no-console */ | ||
} | ||
} | ||
// for debug | ||
}, { | ||
key: 'componentDidUpdate', | ||
value: function componentDidUpdate() { | ||
if ((0, _common.isDebug)()) { | ||
/* eslint-disable no-console */ | ||
console.info('Update: ' + displayName + '(' + this.getResolvedRootPath() + ')'); | ||
/* eslint-enable no-console */ | ||
} | ||
} | ||
}, { | ||
key: 'convertToControlledListener', | ||
@@ -315,0 +337,0 @@ value: function convertToControlledListener(injectedComponentArg) { |
@@ -45,24 +45,26 @@ 'use strict'; | ||
var _common = require('./common'); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
function noop() {} /** | ||
* convertFragment 负责将 config 片段转换为金蝉组件。 | ||
* 这里的重点问题有两个: | ||
* | ||
* 1. 由于金蝉组件都是受控,所以我们转换出的组件也必须是受控的。由于之前 | ||
* Render 的设计已经考虑了受控形式,所以这里只要遵照 Render 的规则给其传入 | ||
* onChange 函数即可变为受控。 | ||
* | ||
* 2. 转换为受控形式之后, 组件的渲染都是由外部传入新数据来控制的。如果包装后 | ||
* 的组件也采取这种获取新值后重新渲染的方式,那么在内部结构变大后,可能会产 | ||
* 生性能问题。例如组件中的某一个 input 一直输入,每次都要从外部全部刷新,会 | ||
* 感觉卡顿。为了解决这个问题,首先,转换后的组件声明了 shouldComponentUpdate | ||
* 为 false,永远不重新渲染。然后,我们让内部 Render 在发生变化先用 stateTree 的 | ||
* cache 缓存住变化,不通知组件更新,仍然往外跑一遍流程,然后在外部通知要重渲染时 | ||
* flush 内部的 stateTree,继续使用 Render 内部的精确更新。 | ||
*/ | ||
/** | ||
* convertFragment 负责将 config 片段转换为金蝉组件。 | ||
* 这里的重点问题有两个: | ||
* | ||
* 1. 由于金蝉组件都是受控,所以我们转换出的组件也必须是受控的。由于之前 | ||
* Render 的设计已经考虑了受控形式,所以这里只要遵照 Render 的规则给其传入 | ||
* onChange 函数即可变为受控。 | ||
* | ||
* 2. 转换为受控形式之后, 组件的渲染都是由外部传入新数据来控制的。如果包装后 | ||
* 的组件也采取这种获取新值后重新渲染的方式,那么在内部结构变大后,可能会产 | ||
* 生性能问题。例如组件中的某一个 input 一直输入,每次都要从外部全部刷新,会 | ||
* 感觉卡顿。为了解决这个问题,首先,转换后的组件声明了 shouldComponentUpdate | ||
* 为 false,永远不重新渲染。然后,我们让内部 Render 在发生变化先用 stateTree 的 | ||
* cache 缓存住变化,不通知组件更新,仍然往外跑一遍流程,然后在外部通知要重渲染时 | ||
* flush 内部的 stateTree,继续使用 Render 内部的精确更新。 | ||
*/ | ||
/* eslint-disable no-nested-ternary */ | ||
function noop() {} | ||
function computeFrom(linkState, utilInstances, _ref) { | ||
@@ -260,2 +262,7 @@ var state = _ref.state; | ||
instance.stateTree.flush(); | ||
if ((0, _common.isDebug)()) { | ||
/* eslint-disable no-console */ | ||
console.info('Fragment stateTree flush'); | ||
/* eslint-enable no-console */ | ||
} | ||
} | ||
@@ -346,2 +353,8 @@ | ||
if ((0, _common.isDebug)()) { | ||
/* eslint-disable no-console */ | ||
console.info('Fragment render'); | ||
/* eslint-enable no-console */ | ||
} | ||
return _react2.default.createElement(_Render2.default, { | ||
@@ -348,0 +361,0 @@ stateTree: instance.stateTree, |
@@ -43,2 +43,4 @@ 'use strict'; | ||
var _common = require('./common'); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
@@ -231,2 +233,7 @@ | ||
instance.stateTree.flush(); | ||
if ((0, _common.isDebug)()) { | ||
/* eslint-disable no-console */ | ||
console.info('DynamicRender stateTree flush'); | ||
/* eslint-enable no-console */ | ||
} | ||
}; | ||
@@ -256,2 +263,8 @@ | ||
if ((0, _common.isDebug)()) { | ||
/* eslint-disable no-console */ | ||
console.info('DynamicRender render'); | ||
/* eslint-enable no-console */ | ||
} | ||
return _react2.default.createElement(_Render2.default, { | ||
@@ -258,0 +271,0 @@ config: config, |
{ | ||
"name": "@cicada/render", | ||
"version": "1.1.22-alpha8", | ||
"version": "1.1.22-alpha9", | ||
"main": "./lib/index.js", | ||
@@ -5,0 +5,0 @@ "scripts": { |
413084
9989