Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Vuex:是否有一个;“最佳做法”;用于确定是否发生了状态更改?_Javascript_Typescript_Vue.js_Vuejs2_Vuex - Fatal编程技术网

Javascript Vuex:是否有一个;“最佳做法”;用于确定是否发生了状态更改?

Javascript Vuex:是否有一个;“最佳做法”;用于确定是否发生了状态更改?,javascript,typescript,vue.js,vuejs2,vuex,Javascript,Typescript,Vue.js,Vuejs2,Vuex,我的团队和我创建了一个Vuex模块,用于存储表单的用户输入内容。如果表单包含未保存的更改,并且用户试图导航离开,那么我们希望警告用户,以便让他们有机会取消导航 如果我们可以简单地对照一个内置的getter进行检查,那就太好了。可能是这样的: if (this.$store.getters['myModule/hasChanged']) { // alert user } else { // allow user to proceed } 我们已经讨论过深入观察状态,并在每次发生

我的团队和我创建了一个Vuex模块,用于存储表单的用户输入内容。如果表单包含未保存的更改,并且用户试图导航离开,那么我们希望警告用户,以便让他们有机会取消导航

如果我们可以简单地对照一个内置的getter进行检查,那就太好了。可能是这样的:

if (this.$store.getters['myModule/hasChanged']) {
    // alert user
} else {
    // allow user to proceed
}
我们已经讨论过深入观察状态,并在每次发生变异时生成一个散列,但质疑这种方法可能带来的性能后果

我们考虑过翻转一个布尔值(无论是在保存表单的组件中还是在状态本身中)来表示是否发生了更改,但同意我们不希望硬编码这样的值

是否有确定给定模块状态是否已更改的最佳实践


谢谢。

我建议使用另一种方法:

  • 将所有输入存储在组件本身中
  • 跟踪组件本身的更改并设置一些布尔标志
    isChanged
  • 当用户离开时:
  • if (this.isChanged) {
        // alert user
    } else {
        // store all inputs to a state
        // allow user to proceed
    }