如何在Pinia中为Action添加执行前的用户确认机制?
需求与问题:Action执行前的用户确认与中断
核心需求
在调用特定Action前向用户发起确认,并可中断其执行。
当前实现方式
// 在主App.vue中 store.$onAction(({name, store, args}) => { if (name === 'setCurrentItem') { if (!confirm(t('confirm.quit_editing'))) { throw new Error('User aborted'); } } });
现有实现的问题
这种方式不够规范,在此处抛出错误并不合理(我将其视为另一种正常的执行路径)。
不将确认逻辑放入store或组件的原因
- 确认属于UI操作,不应放入store
- 使用i18n,在组件外无法正常工作
- 该Action会被多个组件调用,逻辑放入组件会造成重复
Pinia插件的思路
Pinia文档提到插件可以:
Intercept actions and its results(拦截Action及其执行结果)
但遗憾的是我在文档及其他地方都找不到相关示例。
内容的提问来源于stack exchange,提问作者Ionuț Staicu
相关产品推荐
相关产品推荐

