刚开始也一直找async-validator这个包的问题,一位是文本框输入数据类型的问题,
按照网上的各种思路测试了,没有效果。
后来发现是自己的所有reg表达式写在了vuex store ,存到了session storage中,
window.addEventListener('beforeunload', () => {
sessionStorage.setItem('start', JSON.stringify("sessionStorage start"))
sessionStorage.setItem('regTemplate', JSON.stringify(this.$store.state.regTemplate))
sessionStorage.setItem('user', JSON.stringify(this.$store.state.user))
// sessionStorage.setItem('store', JSON.stringify(this.$store.state)) //报错JSON.stringify循环引用了
sessionStorage.setItem('end', JSON.stringify("sessionStorage end"))
localStorage.setItem("test","test localStorage");
})
但是,store比较大,在转JSON的时候,出现了JSON循环引用,而浏览器有时候不报错误(不知道为啥),导致没有存下去,而在另外的地方又重新加载了
// 在页面加载时读取sessionStorage里的状态信息
if (sessionStorage.getItem('store')) {
this.$store.replaceState(
Object.assign(
{},
this.$store.state,
JSON.parse(sessionStorage.getItem('store'))
)
)
}
由于模板在this.$store.state.regTemplate 中,这时候其实所有规则都空了,导致async-validator报类型错误,其实是因为空了。
几种情况:
store转JSON成功了,但是由于reg两侧不能有“”,在从JSON转回reg时,多了“”,无法reg;这又是一个问题,【JSON处理reg内容】
store转JSON失败,那就无法重新加载,程序启动是什么样,就直接用,不会报错。