有点小糊涂~~~
来源:8-9 购物车商品数量控制器(下)

乔伊_
2020-02-01
Hello Sunday老师,本节课程有几个小知识点没弄清楚,麻烦您解答下,谢谢啦╭(╯3╰)╮
第一个小问题:
在计数器组件中监控到number属性变化会触发父组件Shopping中的onNumberChange方法,方法中传参有3个,第1个参数是$arguments(传参集合)。
那么我的问题是为什么一定要通过
let number = $arguments[0]
这种方式获取计数器组件中传过来的参数呢?直接写一个number不能接收吗?
我为什么会这么疑惑呢?
因为在toolbar组件中有这样一个事件
onChangeFragment (item, index) {
this.selectItemIndex = index
this.$emit('onChangeFragment', item.componentName)
},
父组件Main.vue在接收参数的时候如下:
onChangeFragment (componentName) {
this.currentComponent = componentName
}
为什么它写一个形参就可以呢?
第二个问题:
仍然是Shopping这个组件,还是传参的问题。
onNumberChange ($arguments, item, index) {
let number = $arguments[0]
this.$store.commit('changeShoppingDataNumber', {
index: index,
number: number
})
}
这里的第二个参数是item,也就是每一个产品的对象,但是我们貌似没有用到,为啥要把它也作为参数传过去呢?
第三个问题
课程中传参的时候说到了附载对象,什么是附载对象呢?百度没有查到呢!
第四个问题
课程中提到通过Vue.set方法可以把新添加的属性变为响应式的数据。那么什么是响应式的数据呢?
以上四个问题我没搞清楚,麻烦Sunday老师解答下,谢谢啦╭(╯3╰)╮
1回答
-
你好:
第一个问题:因为我们在 shopping 中除了子组件传递的 number 参数之外,我们还需要接受两个父组件中的参数 item 和 index,在这种情况下如果我们这么写的话
@onChangeNumber="onNumberChange(number, item, index)"
那么此时的 number 则是在父组件 shopping 中的 number 而不是子组件通过事件传递过来的 数据。
第二个问题:这里的 item 是有使用到的,这段代码(在商品数量发生变化时,并且 该商品处于选中状态下)
第三个问题:附载对象?是在 onNumberChange 的时候提到的吗?如果实在这里提到的话指的是 arguments 对象,这个只是习惯的称呼而已。 0.0
第四个问题:响应式数据就是当数据发生改变时,页面渲染的内容会跟随发生改变的数据。比如咱们 data 中的数据就是响应式的数据。 而 Vue.set 的作用在观望中有介绍:
向响应式对象中添加一个属性,并确保这个新属性同样是响应式的,且触发视图更新。它必须用于向响应式对象上添加新属性,因为 Vue 无法探测普通的新增属性 (比如 this.myObject.newProperty = 'hi')
012020-02-01
相似问题