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

Vue应用中如何正确渲染Vuex getter中的HTML符号?

解决Vuex getter中HTML实体渲染失效的问题

方法1:使用v-html指令替代插值语法

Vue的{{ }}插值语法会自动转义所有HTML内容,导致 被转换为 并显示为文本。改用v-html指令可以直接解析HTML实体:

<!-- 错误写法:{{ }} 会转义HTML -->
<div>{{ getTranslations['E-mail'] }}</div>

<!-- 正确写法:v-html 解析HTML实体 -->
<div v-html="getTranslations['E-mail']"></div>

注意:确保渲染的内容是可信的(比如自己维护的翻译文本),避免引入XSS风险。

方法2:直接使用Unicode字符替代HTML实体

把&nbsp;替换为对应的Unicode非换行空格(U+00A0),这样用插值语法也能直接显示空格:

修改Vuex getter中的数据:

{
  ...
  "E-mail": "e posta", // 直接输入非换行空格(Windows可按Alt+0160输入,Mac按Option+Space输入)
  // 或者用Unicode转义序列
  "E-mail": "e\u00A0posta"
}

之后用原来的插值语法即可正常显示:

<div>{{ getTranslations['E-mail'] }}</div>

方法3:在getter中手动转换HTML实体(可选)

如果无法修改原始翻译数据,可以在getter中用正则把HTML实体转换为对应的字符:

// Vuex getter定义
getTranslations: state => {
  const translations = {...state.translations}; // 避免修改原状态
  // 转换&nbsp;为Unicode空格
  Object.keys(translations).forEach(key => {
    translations[key] = translations[key].replace(/&nbsp;/g, '\u00A0');
    // 如需支持更多HTML实体,可扩展正则规则
  });
  return translations;
}

之后用{{ }}插值即可正常显示。

内容的提问来源于stack exchange,提问作者A. Kiyan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 04:42:06