- 需求:websocket接收的数据要同步更新到子组件中
- 问题:websocket接收方法写在父组件,message要展示在子组件,使用prop传message给子组件,子组件接收不到数据
- 原因:websocket的回调方法是异步的,如果只使用prop传值会导致,在message还没有被重新赋值前就被使用,自然获取不到后来更新的数据
- 解决方案:
- 方案一:使用computed计算属性
computed:{//在子组件中声明计算属性messageList messageList:function () { //messageList的值随着msgList的值变化而变化 return this.msgList } }- 方案二:使用bus进行组件通信
//1.main.js中声明全局对象Bus Vue.prototype.Bus = new Vue() //2.websocket的接收数据的回调函数中,调用方法和数据 initWebsocket(){ ...//建立连接 ws.onmessage = function (evt) { that.Bus.$emit('updateMessage',that.messageList) } } //3.子组件的mounted中接收方法和数据 methods:{ updateMessage(messageList){ this.messageList = messageList }, }, mounted() { this.Bus.$on('updateMessage',messageList => this.updateMessage(messageList)) }
vue中异步更新的数据同步传给子组件
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。