问答详情
源自:4-4 单页面应用 Demo2(1)

为什么addItem的参数需要state呢?

之前的课程里用Vuex的时候,不都是用this.state来获取的吗,这里为什么要把state作为参数传到mutation的函数里呢?

我试了去掉state,用this.state.lists.push(value),倒是不报错,就是List组件那边获取不到数据。何故?


另外,点击登录跳转到home页面,是不是所有类似这种链接跳转在Vue项目都是这么写:

@click="fun()"---fun() {this.$router.push("target")}


提问者:绝尘kinoko 2019-05-30 10:59

个回答

  • Brian
    2019-05-30 23:07:39
    已采纳

    mutation这个函数就有2个形参,可以看一下vuex的官方的源代码。

    使用this.state是一种偷懒的作法,看一下官方的例子:

    const store = new Vuex.Store({
      state: {
        count: 0
      },
      mutations: {
        increment (state) {
          state.count++
        }
      },
      actions: {
        increment (context) {
          context.commit('increment')
        }
      }})

    如果要纠结,mutation方法中为什么要传state,可以去看看vuex的源码,是有2个形参的。

    使用this.state是我演示中一个偷懒的搞法,跟this的作用域有关系。

    不推荐直接在click方法中使用函数体这种写法,不美观,也不方便阅读,可以参考下官方的代码规范:https://cn.vuejs.org/v2/style-guide/index.html