From f2110d5f731039ceebc365ebb4e729612dc140a6 Mon Sep 17 00:00:00 2001 From: "mark.ck" Date: Fri, 17 Jul 2020 04:03:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=B8=B2=E6=9F=93=20button?= =?UTF-8?q?=20=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/demo/public/assets.json | 16 +++++++++++----- packages/demo/public/schema.json | 10 +++++++++- packages/react-renderer/src/engine/base.jsx | 2 +- packages/react-renderer/src/utils/index.js | 2 ++ .../src/renderer-view.tsx | 3 +-- 5 files changed, 24 insertions(+), 9 deletions(-) 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) => {