报错[Vue warn]: $listeners is readonly. $attrs is readonly.怎么解决?

简介: 报错[Vue warn]: $listeners is readonly. $attrs is readonly.怎么解决?


代码也没有逻辑错误,但是报错

[Vue warn]: $listeners is readonly. $attrs is readonly.

情况1:多处声明了new Vue,解决方案:删除一个,用全局变量引用同一个Vue

情况2:import Vue from 'Vue';第二个Vue首字母不要大写,vue即可

import Vue from 'vue';

情况3:在使用多层级组件的时候,出现了A组件调用B组件,B组件再调用了C组件。直接使用了A组件修改了C组件的数据,这个不合法的。

具体解决办法:

在B组件中嵌入C组件的时候这么写

<C v-bind="$attrs" v-on="$listeners"></C>

<!-- 通过v-on绑定$listeners事件,A组件能越过B组件直接监听获取C组件触发的事件 -->

<!-- 通过v-bind绑定$attrs属性,C组件能越过B组件直接获取到A组件中传递下来的props(除了B组件中props声明的) -->

这样,就实现了A→B→C跳跃式监听事件和传参。

当然也可以用Vuex解决这个问题。

image.png

 

情况4:组件库的package.json中dependencies包含了vue包,然后导致最后打包出来的组件库也包含vue包,然后和引用这个组件库的项目中的vue发生冲突。

举个例子,project1是vue组件库,package.json中dependencies包含了"vue":“2.6.1”

project1打包出了"project1":“0.0.1” 这个组件包

然后project2是项目代码,package.json中dependencies包含了"vue":“2.6.1"和"project1”:“0.0.1”

这样,在使用project1的组件时就会出现readonly错误


相关文章
|
2天前
|
JavaScript
vue页面加载时同时请求两个接口
vue页面加载时同时请求两个接口
|
2天前
|
JavaScript
vue里样式不起作用的方法,可以通过deep穿透的方式
vue里样式不起作用的方法,可以通过deep穿透的方式
10 0
|
2天前
|
移动开发 JavaScript 应用服务中间件
vue打包部署问题
Vue项目`vue.config.js`中,`publicPath`设定为&quot;/h5/party/pc/&quot;,在线环境基于打包后的`dist`目录,而非Linux的`/root`。Nginx代理配置位于`/usr/local/nginx/nginx-1.13.7/conf`,包含两个相关配置图。
vue打包部署问题
|
2天前
|
JavaScript 前端开发
iconfont 图标在vue里的使用
iconfont 图标在vue里的使用
13 0
|
1天前
|
JavaScript 前端开发 容器
Vue 3 中 <transition-group> 组件报错的非 props 属性传递问题
Vue 3 中 <transition-group> 组件报错的非 props 属性传递问题
12 1
|
1天前
|
JavaScript
vue打印v-model 的值
vue打印v-model 的值
|
2天前
|
JavaScript
Vue实战-组件通信
Vue实战-组件通信
4 0
|
2天前
|
JavaScript
Vue实战-将通用组件注册为全局组件
Vue实战-将通用组件注册为全局组件
5 0
|
2天前
|
JavaScript 前端开发
vue的论坛管理模块-文章评论02
vue的论坛管理模块-文章评论02