uniapp emit
时间: 2025-01-08 14:50:39 浏览: 35
### UniApp 中使用 `emit` 触发事件
在 UniApp 开发过程中,为了实现组件间通信或页面间的交互操作,可以利用事件总线机制。通过 `uni.$emit()` 可以向整个应用广播自定义事件,并携带必要的参数给监听该事件的其他部分。
#### 基本语法结构
```javascript
// 发送方:触发名为 'eventName' 的全局事件并附带 data 参数
uni.$emit('eventName', data);
```
此方法允许发送者轻松地通知接收者发生了特定类型的活动,而无需关心谁会接收到这些消息[^1]。
#### 实际应用场景下的代码示例
假设有一个场景,在用户完成登录验证之后需要刷新首页的数据列表:
##### 登录成功后的处理逻辑(发送端)
```javascript
// login.js 文件内某处
async function handleLoginSuccess(userInfo) {
await someApiCallToVerifyUser(userInfo); // 模拟异步请求过程
// 成功后发出 "userLoggedIn" 事件并将 userInfo 对象作为附加信息一同传出
uni.$emit('userLoggedIn', userInfo);
}
```
##### 需要响应登录状态变化的地方(接收端)
可以在任何地方设置好相应的侦听器来捕获上述被发射出来的信号:
```javascript
// homePage.vue 或其他合适位置
export default {
mounted() {
// 订阅来自任意源头发布的 'userLoggedIn' 事件
uni.$on('userLoggedIn', (userData) => {
console.log(`新用户已登录`, userData);
// 执行更新视图所需的操作...
this.refreshDataList();
});
},
methods: {
refreshDataList(){
// 更新数据的具体业务逻辑
}
}
};
```
以上就是关于如何在 UniApp 应用程序里运用 `uni.$emit()` 来创建和传播跨模块可感知的消息流的方式介绍[^2]。
阅读全文
相关推荐


















