千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > vuex项目中怎么使用?工作原理是什么?

vuex项目中怎么使用?工作原理是什么?

来源:千锋教育
发布人:qyf
时间: 2022-09-16 16:22:25 1663316545

vuex项目中怎么使用

  原则:

   中小型项目中,如果组件的公共状态不多的情况下,不建议使用vuex,反而会增加代码复杂度,想要组件通信,直接通过event bus即可,中大型项目中,多个组件公共状态较多情况下,建议使用vuex

  vuex的具体工作流程如下:

   在仓库state中定义公共状态,action中发送异步请求,得到数据后调用mutation 赋值给state,组件中使用state,也可以在组件中 dispatch action和触发mutation来修改state,视图刷新

  具体代码如下:

  仓库代码

  const store = new Vuex.Store({

  state: {

  items: [] // 定义一个公共的购物车数据

  },

  getters: {

  // 可以基于已有的state 派生新的状态

  selectedItems (state) {

  // 过滤购物车中未选中的商品

  return state.items.filter(item => item.selected)

  }

  },

  mutations: {

  // 定义mutation来修改state

  INIT_ITEMS(state, items){

  state.items = items

  }

  },

  actions: {

  // action可以发送异步请求,得到数据后commit mutation将请求结果传入

  FETCH_ITEMS({commit}, params = {}){

  // 调用封装好的 接口函数

  fetchItem(params).then(res => {

  if(res.data.code === 200) {

  commit('INIT_ITEMS', res.data.data)

  }

  })

  }

  }

  })

  组件中使用 使用vuex

  // 获取state

  this.$store.state.items // 直接获取

  {

  computed: {

  ...mapState(['items']) // 助手函数获取

  }

  }

  // 获取getters

  this.$store.getters.selectedItems // 直接获取

  {

  computed: {

  ...mapGetters(['selectedItems']) // 助手函数获取

  }

  }

  // 组件中提交action

  this.$store.dispatch('FETCH_ITEMS', {token: 'xxx'})

  {

  methods: {

  ...mapActions(['FETCH_ITEMS']) // 助手函数 直接调用this.FETCH_ITEMS(params)触发

  }

  }

  // 组件中也可以直接commit mutation

  this.$store.commit('INIT_ITEMS'[,参数])

  {

  methods:{

  ...mapMutations(['INIT_ITEMS']) // 助手函数 直接调用this.INIT_ITEMS(参数)

  }

  }

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT
开班信息
北京校区
  • 北京校区
  • 大连校区
  • 广州校区
  • 成都校区
  • 杭州校区
  • 长沙校区
  • 合肥校区
  • 南京校区
  • 上海校区
  • 深圳校区
  • 武汉校区
  • 郑州校区
  • 西安校区
  • 青岛校区
  • 重庆校区
  • 太原校区
  • 沈阳校区
  • 南昌校区
  • 哈尔滨校区