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组件之间的通信要比导航传信或者中间件传达更加方便快捷,而且也能够避免复杂的数据传输过程。
如果回答有帮助,望采纳。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥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 的代码运行