vue.js - Vuex:在用户输入后如何判断状态是否是脏的/原始的?

标签 vue.js vuex

我有一堆用户可编辑的 Vuex 模块。仅当用户实际点击“保存”时,更改才会被保留,但是,我想处理未保存更改的情况。

我当前的方法是添加一个 isEdited bool 标志,这样我既可以显示通知,又可以防止通过确认对话框导航。

但是,如果用户进行更改然后撤消它,我无法判断当前状态与最初加载的状态相同。

当然,我可以复制状态并将其与当前状态进行比较,但这对于这样一个简单的功能来说感觉开销太大了。

有人可以推荐更好的方法吗?

最佳答案

Vee-validate 可以为您提供这样的东西(专注于用户输入):

您可以检查它是否

PS:也许还有其他软件包可以做类似 Vee-validate 的事情,但那个是一个很好的软件包!


当然,您也可以与克隆对象一起进行比较,但是如果这是一个具有大量嵌套字段的大对象,那么这可能会相当繁重(也要小心如何在 JS 中正确比较 2 个对象,可能推荐 lodash)。


您可以使用useRefHistory创建历史记录并从堆栈中添加/删除。
不同的方法,但在我看来仍然是一种完全可行/好的方法。


你可以忽略整件事。
如果您不想要太多开销,这仍然是最好的方法。
而且,这种情况不会每次都发生。当它发生时,无论如何它都不会是一个大问题(IMO)。

关于vue.js - Vuex:在用户输入后如何判断状态是否是脏的/原始的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74361562/

相关文章:

javascript - 如何从 Vuetify 列表、VueJS 在 Vuex 存储中提交突变

javascript - 更改存储中的值后如何调用组件中的函数?

vue.js - 格式化 Vuex 对象值的方法

javascript - 使用对象分配来清除状态

javascript - Vue.js(vuex)。重新加载页面时,计算属性返回未定义。 (vuex 中硬编码的对象数据数组)

javascript - Vuex 观察者错误地触发了两次

vue.js - VueJs 与父组件属性对象的 react

meteor - 使用Meteor + Vue + D3,我应该把d3代码放在哪里?

javascript - 如何在vue-leaflet中的多边形内添加文本?

sqlite - 执行 db.each 时未定义的 vue 变量