榆
2021-08-26 11:10
采纳率: 100%
浏览 201
已结题

vue3的setup获取axios的响应数据

setup语法中没有this,如何将axios获取的响应数据赋值给setup里面的data变量,有没有人能够解答一下,我是想不出来了
img

  • 收藏

3条回答 默认 最新

  • 前行的枫 2021-08-26 15:09
    已采纳
    1.用ref
    setup(){
          let data = ref<any>();//类型自己定义,我这里用any
          const submit = ()=>{
              post('/login').then(res=>{
                data.value = res.data;
              })
          }
         return {data,submit};
    }
    
    2.用reactive
    setup(){
          let dataState = reactive({
              data:''" as any //类型自己定义我这里用any
          });
          const submit = ()=>{
              post('/login').then(res=>{
                dataState.data= res.data;
              })
          }
         return {...toRefs(dataState),submit};   // 记得引入toRefs
    }
    
    1 打赏 评论
  • CSDN专家-Time 2021-08-26 11:12

    你的这个函数不在 methods里,拿不到this的域。不能用vue的双向绑定。
    扔到methods里做。

    打赏 评论
  • 在下月亮有何贵干 2021-08-26 11:53

    1、由于在执行 setup函数的时候,还没有执行 Created 生命周期方法,所以在 setup 函数中,无法使用 data 和 methods 的变量和方法
    2、由于我们不能在 setup函数中使用 data 和 methods,所以 Vue 为了避免我们错误的使用,直接将 setup函数中的this修改成了 undefined
    3、setup函数只能是同步的不能是异步的

    结合以上三点需要异步执行的获取数据以及保存状态修改到常用生命周期里面进行,不要用setup

    打赏 评论

相关推荐 更多相似问题