You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue JS中使用marked渲染Prop传入的Markdown内容不生效如何解决

问题根因

计算属性本质是基于响应式依赖自动计算的缓存值,不支持直接传入参数,你之前尝试给计算属性传til.description的用法不符合Vue的语法规范,所以功能失效。

修复方案

把markdownToHtml从计算属性改为普通方法,接收markdown文本作为入参进行转换即可,完整修复代码如下:

<template>
  <div class="til-list">
    <div v-for="til in tils" :key="til">
      <div class="til">
        <h3>{{ til.title }}</h3>
        <p>{{ til.description }}</p>
        <!-- 放开这行调用方法即可 -->
        <div v-html="markdownToHtml(til.description)"></div>
        <span v-for="tag in til.tags" :key="tag"> #{{ tag }} </span>
      </div>
    </div>
  </div>
</template>

<script>
import marked from "marked";

export default {
  props: ["tils"],
  data() {
    return {
      markdown: "# Hello World",
    };
  },
  // 改成methods定义转换方法
  methods: {
    markdownToHtml(description) {
      return marked(description);
    }
  }
};
</script>

注意事项

由于v-html会直接解析HTML内容,若你的描述字段允许普通用户提交,建议搭配XSS过滤库对转换后的内容做安全校验,避免恶意脚本注入风险。

内容的提问来源于stack exchange,提问作者Francois Dumas Lattaque

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 20:15:03