diff --git a/packages/jsx2mp-runtime/src/bridge.js b/packages/jsx2mp-runtime/src/bridge.js index 4bce89e6..3047f17e 100644 --- a/packages/jsx2mp-runtime/src/bridge.js +++ b/packages/jsx2mp-runtime/src/bridge.js @@ -99,6 +99,7 @@ function getComponentCycles(Klass) { }); } this.instance = new Klass(props); + this.instance.defaultProps = Klass.defaultProps; this.instance._internal = this; this.instance.__injectHistory = Klass.__injectHistory; this.instance.instanceId = instanceId; @@ -410,10 +411,10 @@ function toleranceEventTimeStamp(timeStamp) { return Math.floor(timeStamp / 10) - 5; } -function generateBaseOptions(internal, defaultProps, ...restProps) { +function generateBaseOptions(internal, ...restProps) { const instanceId = getId('tag', internal); - const props = Object.assign({}, defaultProps, internal[PROPS], { + const props = Object.assign({}, internal[PROPS], { TAGID: instanceId, // In MiniApp every slot is scopedSlots $slots: { diff --git a/packages/jsx2mp-runtime/src/updater.js b/packages/jsx2mp-runtime/src/updater.js index ebdae923..fe2d99ef 100644 --- a/packages/jsx2mp-runtime/src/updater.js +++ b/packages/jsx2mp-runtime/src/updater.js @@ -51,6 +51,13 @@ export function updateChildProps(trigger, instanceId, nextUpdateProps) { targetComponent.props, nextUpdateProps ); + const defaultProps = targetComponent.defaultProps || {}; + // Resolve default props + for (let propName in defaultProps) { + if (nextProps[propName] === undefined) { + nextProps[propName] = defaultProps[propName]; + } + } // Inject history if (targetComponent.__injectHistory) { const history = getMiniAppHistory();