• Vuex->vuex获取值以及改变值,vuex异步请求


    • vuex获取值以及改变值
    • vuex异步请求

    1.vuex获取值以及改变值

    Vuex分成五个部分:

       1.State:单一状态树

       2.Getters:状态获取

       3.Mutations:触发同步事件

       4.Actions:提交mutation,可以包含异步操作

       5.Module:将vuex进行分模块


    Vuex安装

     npm install vuex -S

     npm i -S vuex@3.6.2

     Vuex使用

    1. //src/views/vux/page2
    1. //src/views/vuex/page1
    1. //src/router/index.js
    2. import Vue from 'vue'
    3. import Router from 'vue-router'
    4. import HelloWorld from '@/components/HelloWorld'
    5. import AppMain from '@/components/AppMain'
    6. import LeftNav from '@/components/LeftNav'
    7. import TopNav from '@/components/TopNav'
    8. import Login from '@/views/Login'
    9. import Register from '@/views/Register'
    10. import AddBook from '@/views/book/AddBook'
    11. import BookList from '@/views/book/BookList'
    12. import page1 from '@/views/vuex/page1'
    13. import page2 from '@/views/vuex/page2'
    14. Vue.use(Router)
    15. export default new Router({
    16. routes: [{
    17. path: '/',
    18. name: 'Login',
    19. component: Login
    20. },
    21. {
    22. path: '/Register',
    23. name: 'Register',
    24. component: Register
    25. },
    26. {
    27. path: '/AppMain',
    28. name: 'AppMain',
    29. component: AppMain,
    30. children: [{
    31. path: '/LeftNav',
    32. name: 'LeftNav',
    33. component: LeftNav
    34. },
    35. {
    36. path: '/TopNav',
    37. name: 'TopNav',
    38. component: TopNav
    39. },
    40. {
    41. path: '/book/AddBook',
    42. name: 'AddBook',
    43. component: AddBook
    44. },
    45. {
    46. path: '/book/BookList',
    47. name: 'BookList',
    48. component: BookList
    49. },
    50. {
    51. path: '/vuex/page1',
    52. name: 'page1',
    53. component: page1
    54. },
    55. {
    56. path: '/vuex/page2',
    57. name: 'page2',
    58. component: page2
    59. }]
    60. }
    61. ]
    62. })
    1. //src/components/LeftNav.vue

    vuex获取值以及改变值

    结构

    1. //src/store/state.js
    2. export default{
    3. eduName:'卓京教育',
    4. aname:'',
    5. bname:''
    6. }
    1. //src/store/mutations.js
    2. export default{
    3. setEduName:(state,payload) => {
    4. // state指的就是state.js文件导出的对象
    5. //payload就是vue文件传递过来的参数
    6. // A.vue name {a_name:this.name}
    7. // B.vue name {b_name:this.name}
    8. // state.aname=payload.a_name;
    9. // state.bname=payload.b_name;
    10. state.eduName=payload.eduName
    11. }
    12. }
    1. //src/store/getters.js
    2. export default{
    3. getEduName:(state) => {
    4. return state.eduName;
    5. }
    6. }
    1. //src/store/index.js
    2. import Vue from 'vue'
    3. import Vuex from 'vuex'
    4. import state from './state'
    5. import getters from './getters'
    6. import actions from './actions'
    7. import mutations from './mutations'
    8. Vue.use(Vuex)
    9. const store = new Vuex.Store({
    10. state,
    11. getters,
    12. actions,
    13. mutations
    14. })
    15. export default store
    1. //src/main.js
    2. // The Vue build version to load with the `import` command
    3. // (runtime-only or standalone) has been set in webpack.base.conf with an alias.
    4. import Vue from 'vue'
    5. //开发环境:true && require('@/mock')
    6. //生产环境:false && require('@/mock')
    7. //开发环境下才会引入mockjs
    8. // process.env.MOCK && require('@/mock')
    9. // 新添加1
    10. import ElementUI from 'element-ui'
    11. // 新添加2,避免后期打包样式不同,要放在import App from './App';之前
    12. import 'element-ui/lib/theme-chalk/index.css'
    13. import App from './App'
    14. import router from './router'
    15. import store from './store'
    16. import axios from '@/api/http'
    17. import VueAxios from 'vue-axios'
    18. Vue.use(VueAxios,axios)
    19. // 新添加3
    20. Vue.use(ElementUI);
    21. Vue.config.productionTip = false
    22. /* eslint-disable no-new */
    23. new Vue({
    24. el: '#app',
    25. router,
    26. store,
    27. data(){
    28. return{
    29. Bus:new Vue()
    30. }
    31. },
    32. components: { App },
    33. template: ''
    34. })
    1. //src/views/vuex/page1.vue
    1. //src/views/vuex/page2.vue

    2.vuex异步请求

    同步:某一个时间点只做一件事情,只有当这件事做完,才做另一件事

    异步:某一个时间点,可以做许多事情

    1. //src/api/action.js
    2. /**
    3. * 对后台请求的地址的封装,URL格式如下:
    4. * 模块名_实体名_操作
    5. */
    6. export default {
    7. 'SERVER': 'http://localhost:8080/ssm', //服务器
    8. 'SYSTEM_USER_DOLOGIN': '/user/userLogin', //登陆
    9. 'SYSTEM_USER_DOREG': '/user/userRegister', //注册
    10. 'SYSTEM_MENUS': '/module/queryRootNode', //左侧菜单树
    11. 'BOOK_LIST': '/book/queryBookPager', //书籍列表
    12. 'BOOK_ADD': '/book/addBook', //书籍增加
    13. 'BOOK_UPD': '/book/editBook', //书籍修改
    14. 'BOOK_DEL': '/book/delBook', //书籍删除
    15. 'VUEX_AJAX': '/vuex/queryVuex', //vuex后台异步请求
    16. 'getFullPath': k => { //获得请求的完整地址,用于mockjs测试时使用
    17. return this.SERVER + this[k];
    18. }
    19. }
    1. //src/store/actions.js
    2. export default {
    3. setEduNameAsync: (context, payload) => {
    4. // context指的是vuex的上下文
    5. setTimeout(function() {
    6. context.commit('setEduName', payload);
    7. }, 15000);
    8. },
    9. setEduNameAjax: (context, payload) => {
    10. //this并不代表vue实例
    11. let _this=payload._this;
    12. let url=_this.axios.urls.VUEX_AJAX;
    13. let params={
    14. resturantName:payload.eduName
    15. }
    16. _this.axios.post(url, params).then(r => {
    17. console.log(r)
    18. }).catch(e => {
    19. console.log(e);
    20. });
    21. }
    22. }
    1. //src/views/vuex/page1

  • 相关阅读:
    LeetCode每日一题(1648. Sell Diminishing-Valued Colored Balls)
    ch3_6多线程举例
    JRZB-R02保持防跳继电器
    【pytorch】2.2 pytorch 自动求导、 Tensor 与 Autograd
    [极客大挑战 2019]BuyFlag 1(两种解法)
    【护网急训2】帕鲁杯应急响应靶场
    python:xlwings 操作 Excel 加入图片
    推荐4款不足1M的冷门工具
    qt qml RadioButton如何设置字体颜色,style提示找不到怎么办?
    【21天学习挑战赛】顺序查找和二分查找的小总结
  • 原文地址:https://blog.csdn.net/weixin_73471776/article/details/133743841