首页 > 其他分享 >vue之间的传值问题---2.vuex

vue之间的传值问题---2.vuex

时间:2024-10-14 14:24:48浏览次数:5  
标签:vue adress address --- state loginInfo Vuex vuex store

通过 Vuex 进行状态管理:

是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

在Vuex中传递对象时,应该注意不直接传递对象的引用,

1). 安装Vuex npm install vuex --save

2).然后在src目录下创建store目录,建立一个adress.js文件

// Vuex 配置
const store = new Vuex.Store({
// 在store中定义一个包含对象的状态:
  state: {
    value: '',



  },
//创建一个mutation来更新该状态:
  mutations: {
    setValue(state, value) {
      state.value = value;
    },
  },
});

// 源页面
<template>
  <div>
    <input v-model="value" />
    <button @click="setValue">传递参数</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      value: '',
    };
  },
  methods: {
    setValue() {
      this.$store.commit('setValue', this.value);
    },
  },
};
</script>


// index.js 在store文件下的
Vue.use(Vuex)
export default new Vuex.Store({
//在store中定义一个包含对象的状态
  state: {
    adress: ''
  },
//创建一个action来触发该mutation:
  actions: {
    setAdress (ctx,adress) {
      ctx.commit('setAdress',adress)
    }
  },
//创建一个mutation来更新该状态:
  mutations: {
    setAdress (state,adress) {
      state.adress = adress
    }
  }
})

// .在main.js中引入store
import store from './store'

new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')


//.赋值地址
this.$store.dispatch('setAdress','这里是参数,选中后的地址')
直接通过dispatch触发adress.js中actions中的setAdress方法并将新值传递过去.

//接受参数
console.log('接受到的参数:'+this.$store.state.adress)
这样就能让两个页面之间进行数据传递.


//方法

在组件中使用mapState将状态映射到组件的计算属性中:
import { mapState } from 'vuex';

export default {
  computed: {
    ...mapState(['adress'])
  }
}

在组件中使用mapActions将action映射到组件的方法中:

import { mapActions } from 'vuex';

export default {
  methods: {
    ...mapActions(['setAdress'])
  }
}

在组件中使用this.$store.state.adress访问对象的值,或者使用this.setAdress(payload)来更新对象的值。

例子:


import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    address:'',
    loginInfo:{},
  },
  mutations: {
    setAddress(state,address) {
      state.address = address;
    },
    setLoginInfo(state,loginInfo){
      console.log('11111111111', loginInfo)
      state.loginInfo = loginInfo
      state.loginInfo = JSON.stringify(loginInfo)
      localStorage.setItem('loginInfo',state.loginInfo)
      console.log('11111111111',state.loginInfo)
    }
  },
  actions: {
    // setAddress({commit},address) {
    //   commit('setAddress',address)
    // }
    setAddress(ctx,address) {
      ctx.commit('setAddress',address)
    },
    setLoginInfo(ctx,loginInfo) {
      ctx.commit('setLoginInfo',loginInfo) 
    }
  },
  modules: {
  }
})


  console.log(this.$route.params)
        const methodObject = {
            method: '方法',
            otherData: 'some data'
        };
        this.$store.dispatch('setAddress', '这里是参数,选中后的地址')
        this.$store.dispatch('setLoginInfo', methodObject)
        console.log('接受到的参数:' + this.$store.state.address)
        console.log('接受到的参数1111:' + JSON.parse(this.$store.state.loginInfo).method)




标签:vue,adress,address,---,state,loginInfo,Vuex,vuex,store
From: https://www.cnblogs.com/baozhengrui/p/18464037

相关文章

  • aardio入门到精通05-名字空间
    名字空间importconsole;/*名字空间组织、归类、标识一组具名对象的名字,是模块化编程的重要基础。1.var定义的局部变量有保护变量的作用,其它文件不能调用2.成员变量是名字空间里的变量,加前缀名字空间名来访问,在全局名字空间里可以不加前缀名字空间名3.不同的名字空间,相......
  • js-将JSON 字符串转换为JavaScript 对象(JSON.parse)
    1.背景//JSON字符串constjsonString='{"name":"张三","age":30,"city":"北京"}';获取name值2.JSON字符串进行转换为JS对象将JSON字符串转换为JavaScript对象(JSON.parse(jsonString))//JSON字符串constjsonString='......
  • Vue2用户中心页面开发教程:从零开始,用HTML、CSS和Vue构建新手友好的个人中心页面,提供完
    效果图:使用Vue.js构建用户中心页面:从零到实现在本教程中,我们将使用Vue.js构建一个用户中心页面,这是一个常见的Web应用页面。我们将涵盖页面的布局、样式,以及Vue的基本数据绑定和事件处理功能。这是一个为前端新手量身定制的项目,通过此项目可以了解如何快速构建用户友好......
  • 基于Node.js+vue汉服店铺分享系统(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景在传统文化复兴的浪潮中,汉服作为中华民族传统文化的重要组成部分,近年来受到了越来越多年轻人的追捧和喜爱。随着汉服文化的普及,市场上涌现出了大量的汉服店......
  • 基于Node.js+vue高校党务系统(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展和高校党务工作的日益复杂化,传统的手工管理方式已难以满足当前高校党务工作的需求。高校党务工作涉及学院、专业、班级等多个层级,以......
  • 基于Node.js+vue飞机订票管理系统(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着全球航空业的蓬勃发展,飞机出行已成为人们日常出行的重要方式之一。然而,传统的飞机订票方式,如通过电话、柜台等,不仅效率低下,而且容易出错。同时,随着移动......
  • 基于Node.js+vue公司员工管理系统的设计与实现(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着企业规模的扩大和业务的复杂化,公司员工管理成为了企业管理中的一项重要任务。传统的人工管理方式不仅效率低下,而且容易出错,无法满足现代企业对员工管理......
  • ubuntu20.04 ros noetic cv4 编译sg-slam问题汇总
    1.CV_RGB2GRAY2.CV_MINMAX3.CV_RGB2GRAY4.CV_FILLED引入头文件include<opencv2/imgproc/types_c.h>include<opencv2/opencv.hpp>include<opencv2/highgui/highgui_c.h>include<opencv2/imgproc/imgproc_c.h>或者1和3将CV_改为cv::COLOR_5.fatalerro......
  • mybatis入门案例-传参类型和方式
    mybatis传参类型和方式主要分享一下mybatis的mapper接口参数类型和传参方式,适用于初学者。直接上代码:pom.xml文件<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-insta......
  • C语言-用指针遍历二维数组
    一、1.用一级指针遍历二维数组7#include<stdio.h>89intmain(intargc,char*argv[])10{11inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};12int*p;13p=*a;14inti;15for(i=0;i<12;i++){16if(i!=0&&i%4==0)17......