生产中的Vue在按钮中使用v-text时会破坏应用程序



我有一个奇怪的错误,我已经缩小了范围,但不幸的是,无法创建一个最小的可复制示例(请原谅!(

我正在使用Nuxt.jsVuetifyVue.js

当我在开发模式下运行时,该应用程序可以工作。

但当我在生产模式下运行时,以下组件会导致应用程序冻结(所有按钮都没有响应(。

<v-btn nuxt :to="to" color="primary" large v-text="text" />

当我将v-text="text"替换为{{ text }}作为内部节点时,一切都开始重新工作。

之前(损坏(

<v-btn nuxt :to="to" color="primary" large v-text="text" />

后(固定(

<v-btn nuxt :to="to" color="primary" large>{{ text }}</v-btn>

有人知道Vue生产模式会发生什么变化吗?或者为什么v-text会成为罪魁祸首?

我没有解释为什么它在开发中有效,但在生产中无效,但这无关紧要,因为不应该在组件上使用v-text(除非该组件专门与v-text配合使用(。

CCD_ 6简单地在组件的根元素上设置innerTextDOM属性;这两个在功能上是等效的:

<v-btn v-text="text"></v-btn>
<v-btn :inner-text.prop="text"></v-btn>

设置innerText将用单个文本节点替换元素的所有子节点,实质上破坏了组件的模板。

最好以正常方式设置按钮内容,这样组件就可以将其放入模板中的正确位置:

<v-btn>{{ text }}</v-btn>

关于这个问题:https://github.com/nuxt/framework/issues/6466#issuecomment-1209742483

看起来,由于您将Nuxt与整个SSR/再水合功能一起使用,加上它以强制方式扰乱DOM的事实可能没有帮助。

同时,正如在另一个答案中所提到的:无论如何,你都不应该真正使用这个指令,坚持使用胡子语法。

相关内容

最新更新