- 需求: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中异步更新的数据同步传给子组件
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...