我有一个奇怪的错误,我已经缩小了范围,但不幸的是,无法创建一个最小的可复制示例(请原谅!(
我正在使用Nuxt.js、Vuetify和Vue.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简单地在组件的根元素上设置innerText
DOM属性;这两个在功能上是等效的:
<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的事实可能没有帮助。
同时,正如在另一个答案中所提到的:无论如何,你都不应该真正使用这个指令,坚持使用胡子语法。