更新记录
0.1.0(2026-07-24)
- 首个付费 UTS API MVP。
- 支持字符串快照脏状态判断、保存基线重置、返回确认、并发去重和确认后单次放行。
平台兼容性
uni-app x(5.15)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| 150 | - | - | - | - | - |
Dirty Guard 表单未保存离开提醒
面向 uni-app x 的 UTS API 插件。业务页面只需提供“已保存快照”和“当前快照”,插件负责脏状态判断、返回确认、并发确认去重和确认后的单次放行。
- 不联网;
- 不采集或持久化数据;
- 不修改业务表单;
- 无第三方依赖;
- 确认框文案可配置;
- 并发返回只弹一次确认;
- 确认后只放行下一次返回,避免重复弹窗。
使用示例
import {
dirtyGuardIsDirty,
dirtyGuardMarkSaved,
requestDirtyLeave,
disposeDirtyGuard
} from '@/uni_modules/param-dirtyguard'
const guardKey = 'profile-edit'
export default {
data() {
return {
savedSnapshot: '',
currentSnapshot: '',
dirty: false
}
},
onBackPress() {
return requestDirtyLeave({
key: guardKey,
savedSnapshot: this.savedSnapshot,
currentSnapshot: this.currentSnapshot,
title: '离开页面',
content: '当前内容尚未保存,确定离开吗?',
confirmText: '离开',
cancelText: '继续编辑',
onConfirmed: () => uni.navigateBack(),
onCancelled: () => {}
})
},
onUnload() {
disposeDirtyGuard(guardKey)
},
methods: {
onInput(value) {
this.currentSnapshot = value
this.dirty = dirtyGuardIsDirty(this.savedSnapshot, this.currentSnapshot)
},
saveSucceeded() {
this.savedSnapshot = dirtyGuardMarkSaved(this.currentSnapshot)
this.dirty = false
}
}
}
复杂表单可在业务层生成稳定 JSON 字符串或版本号作为快照。插件刻意不读取业务对象,避免隐式序列化、隐私采集和跨端类型歧义。
支持边界
首版只承诺显式字符串快照、onBackPress 集成和 uni.showModal 确认流程。不承诺微信小程序返回拦截、iOS 侧滑返回、浏览器关闭拦截、自动保存、云同步或表单校验。
插件 ID 为 param-dirtyguard。其中 param 是作者自主选定的英文作者前缀,符合 DCloud“作者 ID 由插件作者自定义”的命名规则和最长20字符限制;最终提交时仍以插件市场的唯一性校验结果为准。

收藏人数:
购买普通授权版(
试用
赞赏(0)
下载 0
赞赏 0
下载 12455571
赞赏 1935
赞赏
京公网安备:11010802035340号