setup语法中没有this,如何将axios获取的响应数据赋值给setup里面的data变量,有没有人能够解答一下,我是想不出来了
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
}
你的这个函数不在 methods里,拿不到this的域。不能用vue的双向绑定。
扔到methods里做。
1、由于在执行 setup函数的时候,还没有执行 Created 生命周期方法,所以在 setup 函数中,无法使用 data 和 methods 的变量和方法
2、由于我们不能在 setup函数中使用 data 和 methods,所以 Vue 为了避免我们错误的使用,直接将 setup函数中的this修改成了 undefined
3、setup函数只能是同步的不能是异步的
结合以上三点需要异步执行的获取数据以及保存状态修改到常用生命周期里面进行,不要用setup