From 2edbc0067cda26b929675f137228837fa4c72b78 Mon Sep 17 00:00:00 2001 From: zengyue Date: Tue, 19 Jan 2021 12:13:40 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0classic=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=E7=9A=84jsx=E8=BD=AC=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/fund-components/src/index.ts | 2 +- packages/jsx/jsx-runtime.js | 2 +- packages/jsx/src/index.ts | 7 ++--- packages/jsx/src/{jsx.ts => jsx-automatic.ts} | 0 packages/jsx/src/jsx-classic.ts | 31 +++++++++++++++++++ packages/jsx/src/jsx-runtime.ts | 8 +++++ 6 files changed, 43 insertions(+), 7 deletions(-) rename packages/jsx/src/{jsx.ts => jsx-automatic.ts} (100%) create mode 100644 packages/jsx/src/jsx-classic.ts create mode 100644 packages/jsx/src/jsx-runtime.ts diff --git a/packages/fund-components/src/index.ts b/packages/fund-components/src/index.ts index 9f2de47e9..8af162261 100644 --- a/packages/fund-components/src/index.ts +++ b/packages/fund-components/src/index.ts @@ -3,5 +3,5 @@ export { default as WeaverLine } from './weaverLine'; export { default as Line } from './line'; -export { default as Guide } from './guide'; +export { default as Guide, withGuide, guideView } from './guide'; export { default as Axis } from './axis'; diff --git a/packages/jsx/jsx-runtime.js b/packages/jsx/jsx-runtime.js index 6769b687b..fbb0cac05 100644 --- a/packages/jsx/jsx-runtime.js +++ b/packages/jsx/jsx-runtime.js @@ -1,2 +1,2 @@ "use strict"; -module.exports = require('./lib/index.js'); +module.exports = require('./lib/jsx-runtime.js'); diff --git a/packages/jsx/src/index.ts b/packages/jsx/src/index.ts index 79bed7641..70287c0af 100644 --- a/packages/jsx/src/index.ts +++ b/packages/jsx/src/index.ts @@ -1,10 +1,7 @@ import render from './render'; -import jsx from './jsx'; -import Fragment from './fragment'; +import jsx from './jsx-classic'; export { render, - Fragment, jsx, - jsx as jsxs -}; +}; diff --git a/packages/jsx/src/jsx.ts b/packages/jsx/src/jsx-automatic.ts similarity index 100% rename from packages/jsx/src/jsx.ts rename to packages/jsx/src/jsx-automatic.ts diff --git a/packages/jsx/src/jsx-classic.ts b/packages/jsx/src/jsx-classic.ts new file mode 100644 index 000000000..891257684 --- /dev/null +++ b/packages/jsx/src/jsx-classic.ts @@ -0,0 +1,31 @@ +import { batch2hd, extendArray, isFunction } from './util'; + +// 实现jsx-classic 入口 +export default function(type: string | Function, props: any, ...children: any[]) { + props = props || {}; + if (isFunction(type)) { + // f2组件,需要在外部实例化 + // @ts-ignore + if (type.prototype && type.prototype.isF2Component) { + return { + type, + props, + key: props.key, + }; + } + // 如果是方法,直接执行,生成G的定义树 + // @ts-ignore + return type(props); + } + + const { style, attrs, key } = props; + + return { + type, + props, + key, + style: batch2hd(style) || {}, + attrs: batch2hd(attrs), + children: extendArray(children), + }; +}; diff --git a/packages/jsx/src/jsx-runtime.ts b/packages/jsx/src/jsx-runtime.ts new file mode 100644 index 000000000..8559aa5d3 --- /dev/null +++ b/packages/jsx/src/jsx-runtime.ts @@ -0,0 +1,8 @@ +import jsx from './jsx-automatic'; +import Fragment from './fragment'; + +export { + Fragment, + jsx, + jsx as jsxs +};