当前位置:首页 > 日记 > 正文

vue+vuex+axio从后台获取数据存入vuex实现组件之间共享数据

vue+vuex+axio从后台获取数据存入vuex实现组件之间共享数据

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

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

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

运行命令

npm install vuex --save-dev

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

import store from './store/index'

并将store挂载到vue上

new Vue({ el: '#app', router, store, template: '<App/>', render: (createElement) => createElement(App)})

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

整个vuex的目录结构如下:

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

在fetch文件夹下新建api.js文件:

import axios from 'axios'export function fetch(url, params) {  return new Promise((resolve, reject) => {    axios.post(url, params)      .then(response => {         alert('Api--ok');        resolve(response.data);      })      .catch((error) => {       console.log(error)        reject(error)      })  })}export default { // 获取我的页面的后台数据 mineBaseMsgApi() {   alert('进入api.js')  return fetch('/api/getBoardList'); }}

在store的入口文件index.js中:

import Vue from 'vue'import Vuex from 'vuex'import mine from './modules/mine';Vue.use(Vuex);export default new Vuex.Store({ modules: {  mine }});

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

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

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

import api from './../../fetch/api';import * as types from './../types.js';const state = { getMineBaseMsg: {  errno: 1,  msg: {} }}const actions = { getMineBaseApi({commit}) {  alert('进入action');  api.mineBaseMsgApi()  .then(res => {    alert('action中调用封装后的axios成功');    console.log('action中调用封装后的axios成功')    commit(types.GET_BASE_API, res)  }) }}const getters = { getMineBaseMsg: state => state.getMineBaseMsg}const mutations = { [types.GET_BASE_API](state, res) {  alert('进入mutation');  state.getMineBaseMsg = { ...state.getMineBaseMsg, msg: res.data.msg }  alert('进入mutations修改state成功'); }}export default { state, actions, getters, mutations}

然后在想取回state的组件中使用mapgetters获取state:

import { mapGetters } from 'vuex';export default { ... computed: {  ...mapGetters([   'getMineBaseMsg'  ]) }, ...   }

然后在控制台查看把:

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

相关文章

关于vuex的学习实践笔记

关于vuex的学习实践笔记

学习,笔记,电脑软件,vuex,Vuex 简介Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。例如(travel store):import * as types from '../t…

如何设置PPT2007演示文稿中图例区

如何设置PPT2007演示文稿中图例区

位置,图例,设置,如何设置,演示文稿,  众所周知,PPT插入图表之后,默认的图例区都是在图表下方的,这让不习惯的人很不适应,那么怎么修改PPT图例区的位置呢?以下是小编为您带来的关于设置PPT2007图例区的位置,希望对您有所帮助。设置PPT2007图例…

Excel2007中批量删除文本和控件对

Excel2007中批量删除文本和控件对

对象,批量删除,控件,操作方法,操作步骤,  当工作表中有很多控件或者图片等对象时,一个一个去删除会非常的繁琐。案例阐述了如何一次性删除整个工作表中图形、控件和影音等对象,方便快捷。今天,小编就教大家在Excel2007中批量删除文本和控件…

Js利用Canvas实现压缩功能

Js利用Canvas实现压缩功能

压缩,功能,电脑软件,Js,Canvas,最近做的APP项目涉及到手机拍照上传图片,因为手机拍照的图片通常都比较大,所以上传的时候就会很慢。为此,需要对图片进行压缩处理来优化上传功能。以下是具体实现:/* * 图片压缩 * img 原始图片 * width 压…

excel 2007窗体录入教程excel 2007

excel 2007窗体录入教程excel 2007

教程,窗体,电脑软件,excel,strong,  在把数据录入到Excel中,有些时候需要打代码进行调整,可以更有效的提高工作效率。下面是由小编分享的excel 2007窗体录入教程,希望对你有用。excel 2007窗体录入教程excel 2007窗体录入教程1:单击Excel2007…

js判断PC端与移动端跳转

js判断PC端与移动端跳转

移动端,跳转,电脑软件,js,PC,在网上看到很多这样类似的代码,但是有的很复杂,或者有的没有判断完全,上次经理去见完客户回来讲,使用苹果浏览打开pc端(pc已经做了识别跳转)会自动跳转到移动端的网页去,后来经测试才发现document.writeln(" 是否为移…

excel2007输入带圈字符的教程excel

excel2007输入带圈字符的教程excel

输入带,字符,教程,电脑软件,strong,  Excel中经常需要使用到输入带圈字符的功能,带圈字符具体该如何输入呢?下面是由小编分享的excel2007输入带圈字符的教程,以供大家阅读和学习。excel2007输入带圈字符的教程输入带圈符号步骤1:打开数据表,…

jq stop | 和:is | :animated的用

jq stop | 和:is | :animated的用

详解,区别,电脑软件,jq,stop,stop(true,true):表示停止匹配元素正在进行的动画并跳转到末状态,清空未执行完的动画队列。常用于”解决光标移入移出得过快导致的动画效果与光标动作不一致“问题!jQuery stop() 方法jQuery stop() 方法用于停止…

jQuery插件扩展操作入门示例

jQuery插件扩展操作入门示例

插件,扩展操作,示例,入门,电脑软件,本文实例讲述了jQuery插件扩展操作。分享给大家供大家参考,具体如下:如下DEMO 展示了为dom扩展一个myshowHtml 的方法<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <script src="…

excel表格的批注功能使用方法

excel表格的批注功能使用方法

使用方法,表格,功能,电脑软件,excel,  Excel中的批注功能该如何使用呢?下面是由小编分享的excel表格的批注功能使用方法,以供大家阅读和学习。excel表格的批注功能使用方法:  添加批注步骤1:选择需要添加批注的单元格。添加批注步骤2:点击&…

ps如何按照步骤安装

ps如何按照步骤安装

安装,方法,步骤,安装步骤,电脑软件,  ps软件是可以进行安装的,但是安装步骤一定要准守。其实这个也不算太难,下面就让小编告诉你ps如何按照步骤安装的方法,一起学习吧。ps按照步骤安装的方法1、先准备软件,下载地址在工具里写出来咯。下载后…

JavaScript转换数据库DateTime字段

JavaScript转换数据库DateTime字段

字段类型,数据库,转换,方法,电脑软件,Javascript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在html(标准通用标记语言下的一个…