elementplus+vue3+ts+setup el-tree 初始化默认选中第一个,点击增加选中样式
时间: 2024-11-06 22:19:01 浏览: 8
在Element Plus结合Vue 3、TypeScript (TS) 和 Setup API 的项目中,要实现在 `el-tree` 中初始化时默认选中第一个节点并添加点击后的高亮样式,你需要做以下几个步骤:
1. 安装依赖:
首先,确保已安装Element Plus、Vue 3、Vue Router(如果需要的话)以及TypeScript。可以运行以下命令:
```
npm install element-plus vue@next typescript @vue/cli-plugin-typescript
```
2. 创建一个树节点的数据模型:
```typescript
// TreeItem.vue
export default defineComponent({
props: {
value: { type: Object as any }, // 树节点数据
selectedKeys: { type: Array<String> },
},
setup(props) {
const isSelected = computed(() => props.selectedKeys.includes(props.value.key));
return {
isSelected,
};
},
render() {
// 使用v-model绑定到selectedKeys,并显示选中状态和点击事件
return (
<el-tree
:props="treeProps"
ref="tree"
v-model={props.selectedKeys}
node-key="key"
@node-click="handleNodeClick"
>
<template #default="{ node }">
<span :class="{ active: isSelected.value }">{{ node.label }}</span>
</template>
</el-tree>
);
},
data() {
return {
treeProps: {
children: "children",
label: "label",
disabled: "disabled",
},
};
},
methods: {
handleNodeClick(node) {
if (!node.disabled) {
this.$refs.tree.setCheckedKeys([node.key]);
}
},
},
});
```
3. 在组件中初始化树并传递数据:
```html
<!-- App.vue 或者某个需要树组件的页面 -->
<script lang="ts">
import { onMounted, ref } from 'vue';
import TreeItem from '@/components/TreeItem.vue';
export default {
components: {
TreeItem,
},
setup() {
let selectedKey = ref(null);
onMounted(() => {
// 指定初始选择的第一个节点
selectedKey.value = yourInitialSelectedKey; // 替换为你实际的数据源中第一个节点的键
});
return {
selectedKey,
};
},
};
</script>
```
4. 点击样式:
默认的Element Plus样式已经提供了一些基础的鼠标悬停和选中效果。如果你想自定义点击后的样式,可以在CSS中添加规则,比如:
```css
.active {
background-color: lightblue; /* 更改成你喜欢的颜色 */
cursor: pointer;
}
```
阅读全文