鱼C论坛

 找回密码
 立即注册
查看: 904|回复: 7

[已解决]vue项目怎么通过mapGetter中获取的token获得用户信息

[复制链接]
发表于 2023-12-25 17:10:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
前端使用vue开发,通过
computed: {
    ...mapGetters([
      'name',
      'token'
    ])
  },
获取到了当前用户的信息和token
想要通过函数
getUserinfo(token) {
      userApi.getInfo(token).then(response => {
        this.userInfo = response.data;
        console.log(this.userInfo);
      })
    },
和钩子函数
    created() {
      this.getUserinfo(token);
  }
实现用户一进入页面就显示自己的用户信息

目前不知道怎么把通过mapGetters获得的token作为参数传入函数中,只查到页面变量的取用方法
最佳答案
2023-12-26 17:20:25
话不多说上代码:
store.js
import {createStore} from "vuex";

import tokenModule from "@/store/modules/token";

const store = createStore({
    modules: {
        tokenModule
    }
});

export default store;
token.js
const tokenModule = {
    namespaced: true,
    state: {
        userToken: "success"
    },
    mutations: {
 
    },
    getters: {
        getUserTokenStr(state) {
            return state.userToken;
        }
    },
    actions: {
 
    }
};

export default tokenModule;
使用mapGetters方法获取
<script>
  import { mapGetters } from 'vuex';
  export default {
    data() {
      return {

      }
    },
    mounted() {
      this.getUserToken()
    },
    methods: {
      ...mapGetters('tokenModule',[
          'getUserTokenStr'
      ]),
      getUserToken() {
        let token = this.getUserTokenStr();
        console.log(token);
      }
    }
  }
</script>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-25 17:10:57 | 显示全部楼层
在Vue中,可以使用`mapGetters`辅助函数将store中的`getters`映射为局部计算属性。你可以直接在组件中使用这些计算属性,而无需手动访问`store`。

首先,确保你已经在`computed`选项中使用了`mapGetters`函数,以便获取到用户的token:
computed: {  ...mapGetters(['getToken'])}
接下来,你可以在`created`钩子函数中直接使用`this.getToken`来获取到token,并把它传递给你的`getUserinfo`函数:
created() {  this.getUserinfo(this.getToken);}
现在,你的`getUserinfo`函数就可以接收到通过`mapGetters`获取到的token了。

完整示例代码如下:
import { mapGetters } from 'vuex';export default {  computed: {    ...mapGetters(['getToken'])  },  methods: {    getUserinfo(token) {      userApi.getInfo(token).then(response => {        this.userInfo = response.data;        console.log(this.userInfo);      });    }  },  created() {    this.getUserinfo(this.getToken);  }}
希望对你有所帮助!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-25 17:16:37 | 显示全部楼层
FishC 发表于 2023-12-25 17:10
在Vue中,可以使用`mapGetters`辅助函数将store中的`getters`映射为局部计算属性。你可以直接在组件中使用 ...

怎么查看token是否传参成功,在钩子函数中在控制台打印的语句似乎都没有执行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-25 17:16:45 | 显示全部楼层
pangforFC 发表于 2023-12-25 17:16
怎么查看token是否传参成功,在钩子函数中在控制台打 ...

如果在钩子函数中的控制台打印语句没有执行,可能有几种原因:

1. 请确保你已经正确引入并使用了`mapGetters`函数。
2. 确认你的`this.getToken`方法返回了预期的token值。可以通过在模板中使用`{{ getToken }}`来验证。
3. 确保你的`getUserinfo`函数可以正常获取到用户信息。可以在函数内部添加`console.log`语句进行调试。

如果以上步骤都没有问题,但控制台还是没有显示任何输出,那可能是`userApi.getInfo`方法出现了问题。你可以检查接口请求是否正确,并查看网络请求的结果。

示例代码如下:
import { mapGetters } from 'vuex';export default {  computed: {    ...mapGetters(['getToken']),  },  methods: {    getUserinfo(token) {      userApi.getInfo(token).then(response => {        this.userInfo = response.data;        console.log(this.userInfo);      });    },  },  created() {    console.log(this.getToken);    this.getUserinfo(this.getToken);  },};
通过在`created`钩子函数中打印`this.getToken`可以验证token是否传参成功。如果能够输出token,那么可以继续调用`getUserinfo`方法来获取用户信息。

希望这次能帮助到你!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-25 17:21:03 | 显示全部楼层
FishC 发表于 2023-12-25 17:16
如果在钩子函数中的控制台打印语句没有执行,可能有几种原因:

1. 请确保你已经正确引入并使用了`mapGet ...

...mapGetters([
      'name',
      'token'
    ])
是这样使用mapGetters的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-25 17:21:11 | 显示全部楼层
pangforFC 发表于 2023-12-25 17:21
...mapGetters()
是这样使用mapGetters的

抱歉,之前给出的示例代码有误。在使用`mapGetters`时,需要传入一个数组,用于指定要映射的getter函数。以下是正确的使用方式:
import { mapGetters } from 'vuex';export default {  computed: {    ...mapGetters(['getToken'])  },  methods: {    getUserinfo() {      const token = this.getToken;      userApi.getInfo(token).then(response => {        this.userInfo = response.data;        console.log(this.userInfo);      });    }  },  created() {    this.getUserinfo();  }}
在上面的代码中,我们将`getToken`指定为要映射的getter函数,并在`getUserinfo`方法中通过`this.getToken`获取到token值。

希望这次能够帮助到你!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-26 10:11:09 | 显示全部楼层
直接 this.token
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-26 17:20:25 | 显示全部楼层    本楼为最佳答案   
话不多说上代码:
store.js
import {createStore} from "vuex";

import tokenModule from "@/store/modules/token";

const store = createStore({
    modules: {
        tokenModule
    }
});

export default store;
token.js
const tokenModule = {
    namespaced: true,
    state: {
        userToken: "success"
    },
    mutations: {
 
    },
    getters: {
        getUserTokenStr(state) {
            return state.userToken;
        }
    },
    actions: {
 
    }
};

export default tokenModule;
使用mapGetters方法获取
<script>
  import { mapGetters } from 'vuex';
  export default {
    data() {
      return {

      }
    },
    mounted() {
      this.getUserToken()
    },
    methods: {
      ...mapGetters('tokenModule',[
          'getUserTokenStr'
      ]),
      getUserToken() {
        let token = this.getUserTokenStr();
        console.log(token);
      }
    }
  }
</script>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-31 03:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表