视频中的str、state、store是固定写法吗?
问题一:在第一步派发action,里面有change属性名和hello world的值,在actions里的change方法内接收的第2个参数,老师用str来接收hello world的值,这个str是固定写法还是自定义命名?
this.$store.dispatch('change', 'hello world')
问题二:在第二步中actions里的change方法内接收的第1个参数,老师传入了store,这是为什么?也是固定写法?
actions: {
change(store, str) {
setTimeout(() => {
store.commit('change', str)
}, 2000)
}
}
问题三: 在第四步mutations执行change方法时,再次传入两个参数,第一个是state,第二个是str,这个时候又为什么传入的参数确实state?为什么跟第二步传入的第一个参数不同?
mutations: {
change(state, str) {
state.name = str
}
}
正在回答
同学你好,对于你的问题解答如下:
1、str是自定义命名的。如果使用dispatch触发对应的actions时 ,没有传递参数,那么就不用在actions中定义形参来接收传递过来的参数。示例:
不接受参数也是可以的,控制台正常输出内容,如下:
2、因为语法中规定的,actions中的方法中第一个参数表示store,第二个参数表示传递过来的数据,所以这种写法是固定的,但是其中的参数名是自定义的,可以任意修改,只要符合命名规范即可。示例:
改变参数名后,代码可以正常运行,可以通过输出查看结果帮助自己更好的理解,示例:
3、因为语法中规定的,mutation中的方法,第一个参数表示state,第二个参数表示传递过来的数据,所以这种写法是固定,但是其中的参数名自定义的,可以任意修改,只要符合命名规范即可。示例:
因为两个change方法定义的位置不同,一个是在actions中定义的,一个是在mutaions中定义的,语法中规定,actions中定义的第一个参数接受的是store, mutations中定义的方法第一个参数接收的是state。参数名都是可以自定义的,讲师中分别定义为store和state,是为了做到见名知意,便于代码阅读。
祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星