Closed skyopens closed 2 years ago
demo语法比较新是响应性语法糖那章, 因为用了setup, 所以不用声明组件,不在script里写tsx的话,声明ts和tsx都可以 下面是正常写法:
<template>
<a-button @click="selectedNode">获取选中节点</a-button>
<VirTree
ref="virTree"
:source="list"
:default-selected-key="defaultSelectedKey"
/>
</template>
<script lang="tsx">
import { ref, defineComponent } from 'vue';
import { TreeNodeOptions, VirTree, TreeContext } from '@ysx-libs/vue-virtual-tree';
function recursion(path = '0', level = 3, h = 6): TreeNodeOptions[] {
const list = [];
for (let i = 0; i < h; i += 1) {
const nodeKey = `${path}-${i}`;
const treeNode: TreeNodeOptions = {
nodeKey,
name: nodeKey,
children: []
};
if (level > 0) {
treeNode.children = recursion(nodeKey, level - 1);
}
list.push(treeNode);
}
return list;
}
export default defineComponent({
name: 'BaseDemo',
components: { VirTree },
setup() {
const list = ref(recursion());
const defaultSelectedKey = ref('0-2');
const virTree = ref<TreeContext>();
const selectedNode = () => {
const node = virTree.value!.getSelectedNode();
console.log('selected node', node);
}
return {
list,
defaultSelectedKey,
virTree,
selectedNode
}
}
});
</script>
忘了感谢了,补一声感谢。👀👀
提示它是引用类型。![提示非值](https://user-images.githubusercontent.com/18607533/173976738-b4a1120f-3c0f-43f0-9976-60a1a31db45a.png)
我看不懂 stackblitz 里的 demo 🤧,为啥 script 用 tsx 还可以用 template,还不用声明组件🤧