在vue项目中组件间相互传值或者后台获取的数据需要供多个组件使用的情况很多的话,有必要考虑引入vuex来管理这些凌乱的状态,今天这边博文用来记录这一整个的过程,后台api接口是使用webpack-server模拟的接口,这个前面的文章中有提到,需要的可以去翻阅。

整个的流程是在组件的created中提交dispatch,然后通过action调用一个封装好的axios然后再触发mutation来提交状态改变state中的数据,然后在组件的计算属性中获取state的数据并渲染在页面上

首先新需要在项目中安装vuex:

运行命令 npm install vuex --save-dev

在项目的入口js文件main.js中

import store from './store/index'

并将store挂载到vue上newVue({

el:'#app',

router,

store,

template:'',

render: (createElement)=>createElement(App)

})

然后看下整个store的目录结构,modules文件夹用来将不同功能也面的状态分成模块,index.js文件夹是store的入口文件,types文件夹是定义常量mutation的文件夹

整个vuex的目录结构如下:

这里我新建了文件夹fetch用来编写所有的axios处理和axios封装

在fetch文件夹下新建api.js文件:import axiosfrom'axios'export function fetch(url,params) {returnnewPromise((resolve, reject) =>{

axios.post(url,params)

.then(response=>{

alert('Api--ok');

resolve(response.data);

})

.catch((error) =>{

console.log(error)

reject(error)

})

})

}

exportdefault{//获取我的页面的后台数据mineBaseMsgApi() {

alert('进入api.js')returnfetch('/api/getBoardList');

}

}

在store的入口文件index.js中:import Vuefrom'vue'import Vuexfrom'vuex'import minefrom'./modules/mine';

Vue.use(Vuex);

exportdefaultnewVuex.Store({

modules: {

mine

}

});

在你需要请求后台数据并想使用vuex的组件中的created分发第一个dispatch:

created() {this.$store.dispatch('getMineBaseApi');

}

然后在store/modules下的对应模块js文件中,这里我使用的mine.js文件中编写state、action和mutationimport apifrom'./../../fetch/api';

import*astypesfrom'./../types.js';conststate ={

getMineBaseMsg: {

errno:1,

msg: {}

}

}constactions ={

getMineBaseApi({commit}) {

alert('进入action');

api.mineBaseMsgApi()

.then(res=>{

alert('action中调用封装后的axios成功');

console.log('action中调用封装后的axios成功')

commit(types.GET_BASE_API, res)

})

}

}constgetters ={

getMineBaseMsg: state=>state.getMineBaseMsg

}constmutations ={

[types.GET_BASE_API](state, res) {

alert('进入mutation');

state.getMineBaseMsg={ ...state.getMineBaseMsg, msg: res.data.msg }

alert('进入mutations修改state成功');

}

}

exportdefault{

state,

actions,

getters,

mutations

}

然后在想取回state的组件中使用mapGetters获取state:import { mapGetters }from'vuex';

exportdefault{

...

computed: {

...mapGetters(['getMineBaseMsg'])

},

...

然后在控制台查看把:

getter和mutation都已经成功了,同时我在提交state的整个过程都添加了alert,大家可以看看整个流程是如何走的;

vue根据url获取内容axios_vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据...相关推荐

  1. vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据

    vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据 在vue项目中组件间相互传值或者后台获取的数据需要供多个组件使用的情况很多的话,有必要考虑引入vuex来管理这些凌乱的状态,今 ...

  2. uniapp 子组件 props拿不到数据_谈一谈使用 webpack 开发时,Vue 组件之间的数据传递...

    •我们在学习Vue的时候,难免会使用各个组件之间传递数据.•先来介绍一下Vue中组件传递的方式,有父组件传递给子组件数据,子组件传递给父组件数据,父组件直接获取子组件中数据,子组件直接获取父组件数据以 ...

  3. vuex+element 从后台获取数据写导航栏-菜单权限

    主要用到 vuex.router.beforeEach.router.addRoutes().vuex 的使用方法可以看我的另一篇博客:vue笔记(四)vuex. 顺便安利一个 在线视频转gif图. ...

  4. 【Vue组件传值】不同的组件之间的数据传值方法

    不同的组件之间的数据传值方法 父组件向子孙组件传值.通过方法provide / inject (1)provide/inject的介绍: provide/ inject 是vue2.2.0新增的api ...

  5. vue.js 组件之间传递数据

    前言 组件是 vue.js 最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用.如何传递数据也成了组件的重要知识点之一. 组件 组件与组件之间,还存在着不同的关 ...

  6. WEB前端 vue学习二 组件之间的数据传递

    Vue 的组件作用域都是孤立的,不允许在子组件的模板内直接引用父组件的数据.必须使用特定的方法才能实现组件之间的数据传递. 首先用 vue-cli 创建一个项目,其中 App.vue 是父组件,com ...

  7. vue.js 组件之间传递数据 1

    vue.js 组件之间传递数据 框架 浏览数:437 2017-8-21 组件是 vue.js 最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用.如何传递数据 ...

  8. Vue父组件和子组件之间传递数据

    Vue父组件和子组件之间传递数据 klmhly 已关注 2018.05.19 19:56* 字数 367 阅读 23评论 0喜欢 0 一.概念解析 挂载点: Vue实例的el属性对应的id,vue只会 ...

  9. Vue之组件之间的数据传递

    Vue的组件作用域都是孤立的,不允许在子组件的模板内直接引用父组件的数据,必须使用特定的方法才能实现组件之间的数据传递. 下列为在vue-cli创建项目中的操作 一·父组件向子组件传递数据 在Vue中 ...

最新文章

  1. python如何调用文件_如何调用另一个python文件中的代码
  2. tdk磁材手册_TDK的铁氧体磁铁(FB系列) - TDK Product Center.PDF
  3. hdu 2006 求奇数的乘积(c语言)
  4. android小米计算器布局,小米这8个逆天小功能一定用起来!不会用,手机简直白买...
  5. String.valueOf()
  6. Pycharm代码格式化快捷键及其设置方法
  7. 解决0RA-04031故障
  8. 苹果mac视觉效果和动态图形设计软件:After Effects 2022 (ae 2022)
  9. java新建json 数组_Java创建JSON对象
  10. android sdk根目录,Android SDK位置
  11. 计算机专业保研英语自我介绍,计算机保研面试英文自我介绍.doc
  12. 【Python爬虫】淘宝商品比价定向爬虫
  13. 1日人民币对美元汇率中间价下调56个基点
  14. 动态修改 DHTML Gantt甘特图皮肤样式
  15. A dependency may only have one source.
  16. VMware的linux虚拟机玩耍 [2] (环境配置与一些软件安装)
  17. 小米再显价格杀手本色,将推更便宜5G手机
  18. SQLSERVER数据库质疑解决方案
  19. 什么会导致HTTP出现429请求过多错误?
  20. MySQL——创建视图的注意事项

热门文章

  1. RHCE实验室NTP时间服务器配置最终版
  2. 如何在客户端调用服务端代码
  3. android中私有方法 继承,Android项目实战系列—基于博学谷(五)个人资料
  4. where嵌套select_Select子查询:Select Zoo
  5. 完善Library的管理方式
  6. 天津大学计算机在线作业答案,天大19秋《计算机应用基础》在线作业二【满分答案】...
  7. Anton and Fairy Tale CodeForces - 785C(二分+思维)
  8. Three Strings CodeForces - 1301A
  9. 洋葱模型php,理解Koa洋葱模型
  10. mysql增加某人信息_mysql 增加用户