javascript - 一段理解艰难的vue代码, 怎么修改得更易于理解
本文介绍了javascript - 一段理解艰难的vue代码, 怎么修改得更易于理解的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
看到如下代码,
- 片段一中
dispatch
的第二个参数作为回调函数传递给了片段二的cb
- 片段二中
cb
的第一个参数作为回调又反向传递给了片段一的cb
- 片段一的
response.data
作为实参传递给了片段二的形参user
,然后commit
不知道我理解的对不对.但是总感觉这段代码非常难以理解.... 求大神指教怎么修改更容易懂
xxx.vue:
const login = {
data: () => ({
access: '',
password: '',
error: null
}),
methods: {
submit () {
... ...
.then(response => {
// !!!! 代码片段一
this.$store.dispatch(USER_UPDATE, cb => {
cb(response.data);
this.$router.replace(this.$route.query.redirect || '/');
});
// end
})
.catch(({ response: { data = {} } }) => {
... ...
});
}
}
};
xxx.store:
const actions = {
[USER_UPDATE]: (context, cb) => {
// !!! 代码片段二
return cb(
user => context.commit(USER_UPDATE, user),
context
)
// end
},
... ...
};
解决方案
- 像楼上所说,submit过程放在action中处理
- actions拿到数据后,直接通过commit处理数据
-
router的重定向操作有两种
- 通过某一个state进行控制,在组件中watch这个数据的变更,进行回调
- 观察者模式,订阅user update的事件,进行操作
这篇关于javascript - 一段理解艰难的vue代码, 怎么修改得更易于理解的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文