diff --git a/packages/schema-page/index.vue b/packages/schema-page/index.vue
index 0a8a80c..c94c620 100644
--- a/packages/schema-page/index.vue
+++ b/packages/schema-page/index.vue
@@ -36,9 +36,15 @@
-
+
-
+
diff --git a/packages/table/normal.vue b/packages/table/normal.vue
index 24b3961..4144968 100644
--- a/packages/table/normal.vue
+++ b/packages/table/normal.vue
@@ -1,5 +1,6 @@
diff --git a/packages/utils/vnode.js b/packages/utils/vnode.js
index 465b363..bdf35cb 100644
--- a/packages/utils/vnode.js
+++ b/packages/utils/vnode.js
@@ -16,7 +16,40 @@ export function registerRef(vnode, context) {
// 简写注册ref
export function ref(name, context) {
- return registerRef(context._c(name, context), context);
+ const vnode = context._c(name, renderContext(context));
+ return registerRef(vnode, context);
+}
+
+// 清除attrs上的数组和对象,仅用props传递
+function clearAttrs(attrs) {
+ const newAttrs = Object.assign({}, attrs);
+ Object.keys(newAttrs).forEach(key => {
+ if (typeof newAttrs[key] === 'function' || typeof newAttrs[key] === 'object') {
+ delete newAttrs[key];
+ }
+ });
+ delete newAttrs.slot;
+ return newAttrs;
+}
+
+// 渲染函数式组件context
+export function renderContext(context) {
+ const result = {
+ staticClass: context.data.staticClass,
+ class: context.data.class,
+ staticStyle: context.data.staticStyle,
+ style: context.data.style,
+ attrs: clearAttrs(context.data.attrs),
+ props: context.props,
+ on: context.listeners,
+ directives: context.data.directives,
+ scopedSlots: context.scopedSlots,
+ slot: context.data.slot,
+ key: context.data.key,
+ ref: context.data.ref,
+ refInFor: true,
+ };
+ return result;
}
export default {
--
libgit2 0.21.0