有点小糊涂~~~

来源: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回答

Sunday

2020-02-01

你好:

第一个问题:因为我们在 shopping 中除了子组件传递的 number 参数之外,我们还需要接受两个父组件中的参数 item 和 index,在这种情况下如果我们这么写的话 

@onChangeNumber="onNumberChange(number, item, index)"

那么此时的 number 则是在父组件 shopping 中的 number 而不是子组件通过事件传递过来的 数据。

第二个问题:这里的 item 是有使用到的,这段代码(在商品数量发生变化时,并且 该商品处于选中状态下)

           //img.mukewang.com/szimg/5e34ed2f0929dc7b16181119.jpg

第三个问题:附载对象?是在 onNumberChange 的时候提到的吗?如果实在这里提到的话指的是 arguments 对象,这个只是习惯的称呼而已。 0.0

第四个问题:响应式数据就是当数据发生改变时,页面渲染的内容会跟随发生改变的数据。比如咱们 data 中的数据就是响应式的数据。 而 Vue.set 的作用在观望中有介绍:

向响应式对象中添加一个属性,并确保这个新属性同样是响应式的,且触发视图更新。它必须用于向响应式对象上添加新属性,因为 Vue 无法探测普通的新增属性 (比如 this.myObject.newProperty = 'hi')

0
1
乔伊_
非常感谢!
2020-02-01
共1条回复

混合开发入门 Vue结合Android/iOS开发仿京东项目App

流行的混合开发实战入门,前端和原生开发同学不容错过

1108 学习 · 448 问题

查看课程