如何把vue中state的值赋值给data

我在created中派遣的mutation,然后改变我的初始化state

state(初始值):
clipboard.png

mutation(改变state):
clipboard.png
action(调用接口):
clipboard.png
在created生命周期中派遣:
clipboard.png
通过mapState拿到改变后的state:
clipboard.png
这个是我的data:!
clipboard.png
我希望当我的页面加载完成defaultdata的值是state的值?试了好多都不行,大家有什么好办法吗?

阅读 20.9k
3 个回答

我觉得可以这样

// ...
computed () {
  defaultData () {
    return {
      SDcard: this.$store.state.alarmInput.actionList.SDcard,
      Trlparam: this.$store.state.alarmInput.Trlparam
    }
  }
}
// ...

我不明白为什么要执着于data,实际上data和computed的值最终都会是该vue实例的成员属性,这样只要在computed中返回就可以了
或许非要这样的话,可以在computed中返回,然后watch computed中的属性,然后在watcher中改变this.defaultData?
或许还可以在父组件中传递props到该组件中,当然这也并不是data中的属性.
重点是datapropscomputed,还有vuex中的state,本身在程序中代表的含义就不一样,如果说想实现的功能非得是在data中包裹返回state中的属性,我会觉得这个设计不合理

重新审题之后

看到说是希望data中的默认值与state中的值一致?意思是,不随state的改变而改变吗?
这倒是可以做到

data () {
  var p1 = this.$store.state.xxx.p1
  var p2 = this.$store.state.xxx.p2
  return {
    defaultData: {
      p1: p1,
      p2: p2
    }
  }
}

不知道这样做符合你的预期吗

通过mapState拿到改变后的state 是在 computed 属性里吗?
那么获取的计算属性名称就是 SDcard 和 Trlparam,没有办法让他们叫 defaultData 的。

如果一定要和 state 中的初始值一样,可以使用 lodash 中的 clone,直接在 created 中 clone this.$state

vuex的值放在computed之中使用

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题