vue3 markMap使用

安装依赖

javascript 复制代码
pnpm install markmap-lib
pnpm install markmap-view
pnpm install markmap-common

vue代码

javascript 复制代码
<template>
	<div class="markmap-container">
		<svg ref="svgRef" style="width: 100%; height: 100%; border: 1px solid #ccc;"></svg>
	</div>
</template>

<script setup>
	import {
		ref,
		onMounted,
		watch
	} from "vue";
	import {
		Markmap
	} from "markmap-view";
	import {
		Transformer
	} from "markmap-lib";

	// Markdown内容
	const initValue = `# 礼物交换

## 张三
- 给李四一瓶酒 🍾
- 给王五一瓶酒 🍾

## 李四
- 收到张三一瓶酒 🍾
- 给王五一包烟 🚬

## 王五
- 收到李四一包烟 🚬
- 收到张三一瓶酒 🍾`;

	// 引用和响应式数据
	const svgRef = ref(null); // 改为svgRef
	const markmapInstance = ref(null); // 改为更清晰的变量名
	const transformer = new Transformer();

	// 更新思维导图的方法
	const updateMarkmap = async () => {
		if (!markmapInstance.value || !initValue) return;

		try {
			const {
				root
			} = transformer.transform(initValue);
			markmapInstance.value.setData(root);
			// markmapInstance.value.fit(); // 自动调整视图
		} catch (error) {
			console.error("Markmap渲染错误:", error);
		}
	};

	onMounted(() => {
		if (svgRef.value) {
			// 初始化Markmap实例
			markmapInstance.value = Markmap.create(svgRef.value, {
				autoFit: true
			});
			updateMarkmap();
		}
	});
</script>

<style>
	.markmap-container {
		width: 100%;
		height: 100dvh;
	}

	.markmap-container svg {
		font-family: sans-serif;
		background-color: #f9f9f9;
	}
</style>
相关推荐
shaohaoyongchuang1 小时前
vue_06跨域
前端·javascript·vue.js
VX:Fegn08951 小时前
计算机毕业设计|基于springboot+vue的健康饮食管理系统
java·vue.js·spring boot·后端·课程设计
yqcoder2 小时前
Vue2 和 Vue3 中祖先组件和子孙组件的通信方法和区别
前端·javascript·vue.js
鹏多多2 小时前
前端组件二次封装实战:Vue+React基于Element UI/AntD的高效封装策略
前端·vue.js·react.js
北极糊的狐2 小时前
使用 vue-awesome-swiper 实现轮播图(Vue3实现教程)
前端·javascript·vue.js
含若飞2 小时前
列表弹窗实现方案整理
前端·javascript·vue.js
shaohaoyongchuang2 小时前
vue_05axios
前端·javascript·vue.js
代码or搬砖3 小时前
SpringBoot+VUE+阿里云OSS实现简单的视频上传和展示
vue.js·spring boot·阿里云
艾小码3 小时前
Vue开发三年,我才发现依赖注入的TypeScript正确打开方式
前端·javascript·vue.js