技术不行但人小帅 2023-02-19 22:08 采纳率: 59.7%
浏览 31
已结题

uniapp 同级组件怎么通信?

uniapp同级间的组件该怎么通信好点?是导航传值还是通过中间件好点?有代码能让我参考参考吗

  • 写回答

2条回答 默认 最新

  • 量化研究所 2023-02-19 22:27
    关注

    在uniapp中,同级组件之间的通信可以通过使用Vuex实现。Vuex是一个专为vue.js应用开发的状态管理模式,它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。它可以向不同的组件传递消息,这样就可以让同级组件之间彼此通信。

    下面是一个关于Vuex实现uniapp组件间通信的代码样例:

    // store/index.js
    import Vue from 'vue'
    import Vuex from 'vuex'
    
    Vue.use(Vuex)
    
    export default new Vuex.Store({
      state: {
        message: '' // 定义一个state,用来存储消息
      },
      mutations: {
        updateMessage(state, message) { // 定义一个mutation,用来更新message
          state.message = message
        }
      }
    })
    
    
    // App.vue
    <template>
      <view class="app">
        <component1 />
        <component2 />
      </view>
    </template>
    <script>
    import store from './store' // 导入store实例 
    import component1 from './components/component1' // 导入component1组件 
    import component2 from './components/component2' // 导入component2组件 
    export default {
      data() {
        return {}; 
      }, 
      components: { component1, component2 }, // 注册component1、component2组件 
    
      store // 注册store实例 
    
       methods: {},
    
       created() {}
    
       } 
    
     </script>
    
     // component1.vue 
    
     <template> 
    
       <view class="component1">
    
         <!-- 点击更新message -->
    
         <button @click="updateMessage">更新Message</button>
    
       </view>
    
     </template>
    
     <script> 
    
     import { mapMutations } from 'vuex' // 导入mapMutations函数 
    
     export default {
    
       data() {
    
         return {}
    
       },
    
       methods: {
    
         ...mapMutations({ updateMessage: 'updateMessage' }), // 映射updateMessage方法到store中的updateMessage mutation 
    
         updateMessage() { // 点击更新message
    
           this.updateMessage('Hello World') // 调用mutation更新message值为'Hello World'
    
         }
    
       }
    
     }
    
     </script>
    
     // component2.vue 
    
     <template> 
    
       <view class="component2">{{ message }}</view> <!-- 显示message值 -->
    
     </template>
    
     <script> 
    
     import { mapState } from 'vuex' // 导入mapState函数 
    
     export default {
    
       data() {
    
         return {}
    
       },
    
       computed: {
    
         ...mapState({ message: state => state.message }) // 映射message值到store中state.message属性上 
    
       }
    
     }
    
     </script>
    

    以上就是使用Vuex在uniapp中实现同级组件之间通信的方法。总体来说,使用Vuex实现uniapp组件之间的通信要比导航传信或者中间件传达更加方便快捷,而且也能够避免复杂的数据传输过程。
    如果回答有帮助,望采纳。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 2月20日
  • 已采纳回答 2月19日
  • 创建了问题 2月19日

悬赏问题

  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥15 树莓派5怎么用camera module 3啊
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥15 Attention is all you need 的代码运行