diff --git a/packages/demo/public/assets.json b/packages/demo/public/assets.json index ed24df8f4..3a9ce284a 100644 --- a/packages/demo/public/assets.json +++ b/packages/demo/public/assets.json @@ -962,7 +962,12 @@ "propType": "object", "description": "自定义内联样式" } - ] + ], + "configure": { + "component": { + "isContainer": true + } + } }, { "componentName": "Button.Group", @@ -12355,9 +12360,9 @@ "type": "normal", "size": "medium", "htmlType": "button", - "component": "button", - "children": [ ] - } + "component": "button" + }, + "children": "取消" } }, { @@ -12370,7 +12375,8 @@ "size": "large", "htmlType": "button", "component": "button" - } + }, + "children": "提交" } } ] diff --git a/packages/demo/public/schema.json b/packages/demo/public/schema.json index 4ede06f9d..7fbf8aa9f 100644 --- a/packages/demo/public/schema.json +++ b/packages/demo/public/schema.json @@ -112,7 +112,15 @@ }, "htmlType": "submit" }, - "children": "提交" + "children": [ + { + "componentName": "Icon", + "props": { + "type": "success" + } + }, + "提交" + ] }, { "componentName": "Button", "props": { diff --git a/packages/react-renderer/src/engine/base.jsx b/packages/react-renderer/src/engine/base.jsx index 3f6f090c2..af8c6d4eb 100644 --- a/packages/react-renderer/src/engine/base.jsx +++ b/packages/react-renderer/src/engine/base.jsx @@ -310,7 +310,7 @@ export default class BaseEngine extends PureComponent { ...componentInfo, props: transformArrayToMap(componentInfo.props, 'name'), }, - }); + }) || {}; // 对于可以获取到ref的组件做特殊处理 if (acceptsRef(Comp)) { otherProps.ref = (ref) => { diff --git a/packages/react-renderer/src/utils/index.js b/packages/react-renderer/src/utils/index.js index cc5c5a256..19332fa96 100644 --- a/packages/react-renderer/src/utils/index.js +++ b/packages/react-renderer/src/utils/index.js @@ -63,6 +63,8 @@ const ENV = { */ export function isSchema(schema, ignoreArr) { if (isEmpty(schema)) return false; + // Leaf 组件也返回 true + if (schema.componentName === 'Leaf') return true; if (!ignoreArr && Array.isArray(schema)) return schema.every((item) => isSchema(item)); return !!(schema.componentName && schema.props && (typeof schema.props === 'object' || isJSExpression(schema.props))); } diff --git a/packages/react-simulator-renderer/src/renderer-view.tsx b/packages/react-simulator-renderer/src/renderer-view.tsx index c878cac76..720504e21 100644 --- a/packages/react-simulator-renderer/src/renderer-view.tsx +++ b/packages/react-simulator-renderer/src/renderer-view.tsx @@ -128,11 +128,10 @@ class Renderer extends Component<{ renderer: SimulatorRenderer }> { }); console.info('menuprops', viewProps); } - return createElement( getDeviceView(Component, device, designMode), viewProps, - leaf?.isContainer() ? (children == null ? [] : Array.isArray(children) ? children : [children]) : null, + leaf?.isContainer() ? (children == null ? [] : Array.isArray(children) ? children : [children]) : children, ); }} onCompGetRef={(schema: any, ref: ReactInstance | null) => {