React 深度学习:ReactFiberLazyComponent
生活随笔
收集整理的這篇文章主要介紹了
React 深度学习:ReactFiberLazyComponent
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
path: packages/react-reconciler/src/ReactFiberLazyComponent.js
resolveDefaultProps
解析默認 props
export function resolveDefaultProps(Component: any, baseProps: Object): Object {if (Component && Component.defaultProps) {// 解析默認 props。取自 ReactElementconst props = Object.assign({}, baseProps);const defaultProps = Component.defaultProps;// 對未傳入的 props 附上默認值for (let propName in defaultProps) {if (props[propName] === undefined) {props[propName] = defaultProps[propName];}}return props;}return baseProps; } 復制代碼React 解析默認 props 的方式就是在組件上尋找是否存在 defaultProps 屬性。如果存在則對它進行遍歷,拷貝當前未指定的 prop。
readLazyComponentType
export function readLazyComponentType<T>(lazyComponent: LazyComponent<T>): T {const status = lazyComponent._status;const result = lazyComponent._result;switch (status) {case Resolved: {const Component: T = result;return Component;}case Rejected: {const error: mixed = result;throw error;}case Pending: {const thenable: Thenable<T, mixed> = result;throw thenable;}default: {lazyComponent._status = Pending;const ctor = lazyComponent._ctor;const thenable = ctor();thenable.then(moduleObject => {if (lazyComponent._status === Pending) {const defaultExport = moduleObject.default;if (__DEV__) {// do something}lazyComponent._status = Resolved;lazyComponent._result = defaultExport;}},error => {if (lazyComponent._status === Pending) {lazyComponent._status = Rejected;lazyComponent._result = error;}},);// Handle synchronous thenables.switch (lazyComponent._status) {case Resolved:return lazyComponent._result;case Rejected:throw lazyComponent._result;}lazyComponent._result = thenable;throw thenable;}} } 復制代碼轉載于:https://juejin.im/post/5d11616d6fb9a07eae2a6a75
總結
以上是生活随笔為你收集整理的React 深度学习:ReactFiberLazyComponent的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在docker镜像中加入环境变量
- 下一篇: 医院信息化建设历程(5)互联互通的数字化