Javascript 具有v形的组件,用于不渲染
我试图包含一个带有Javascript 具有v形的组件,用于不渲染,javascript,vue.js,vuejs2,Javascript,Vue.js,Vuejs2,我试图包含一个带有v-for的组件。数据源infotext是一个对象,包含区域设置代码作为键,消息作为值。 例如: 下面是我用来包含组件的代码: <text-editor v-for="(value, index) in infoTexts" :key="index" :database-message-contents="value" :message-locale-code="index"></text-editor> 数据库消息内容和消息区域设置代码都是文本编
v-for
的组件。数据源infotext
是一个对象,包含区域设置代码作为键,消息作为值。
例如:
下面是我用来包含组件的代码:
<text-editor v-for="(value, index) in infoTexts" :key="index" :database-message-contents="value" :message-locale-code="index"></text-editor>
数据库消息内容
和消息区域设置代码
都是文本编辑器
组件上的道具
我的控制台中没有收到任何错误消息,但
文本编辑器未显示。该问题涉及对Vue生命周期的误解。
我在mounted
方法中创建infotext
。将其重新定位到创建的方法解决了问题。您自己对问题的回答仅部分正确,可能误导其他用户。
让我解释一下原因:
- 此问题的根源不在于使用错误的Vue生命周期方法
- v-for本身是反应性的,这意味着您可以在生命周期的任何时候添加元素,它只需重新渲染即可
您的挂载方法中假定的代码:
this.infoTexts.nl = 'Text in Dutch'
此代码不起作用,因为Vue无法在运行时检测添加到对象的属性
相反,您应该使用提供的方法。
所以你的新代码看起来像这样
Vue.set(this.infoTexts, 'nl', 'Text in Dutch');
使用上面的代码,您可以随时添加新语言,也可以使用任何生命周期方法添加新语言
即使您没有提供显示创建infoTexts
数组的代码,也有95%的情况下会出现此问题。您的代码(可能是您的组件)一定有其他问题。根据你提供的数据,效果很好。实际上我也有同样的问题,这个答案应该排在前面。了解Vue的生命周期是一个很大的帮助!
Vue.set(this.infoTexts, 'nl', 'Text in Dutch');