method 返回的数据,在created里面拿怎么是空啊

新手上路,请多包涵

method 返回的数据,在created里面拿怎么是空啊

阅读 4.6k
6 个回答

created 是vue的生命周期函数,它的调用通常早于method方法。当然如果你不想让created过于臃肿,可将逻辑放在method方法内,通过this调用,如下

...
created(){
    pageData= this.getData()
    ....
},
methods:{
    getData(){
        xx..向后台发起请求...
        return data
    }
}
...

有可能是你在请求数据后,对变量赋值不正确

如果method是异步函数, created里是可能拿不到数据的

可能有如下原因

  • method中的方法没有return
  • method中的方法是异步方法,(向后台请求数据那种)

解决方法:

export default {
    data() {
        return {
            result: ""
        }
    },
    create() {
        this.getData()
    },
    methods: {
        getData() {
            this.$axios.get(url).then(res => {
                // res 解析
                this.result = res
            })
        }
    }
}

提个思路
1.生命周期内没加$nextTick
2.项目是ssr
3.接口异常或者返回的数据为空

新手上路,请多包涵

谢谢大家的思路,(我的问题是一个el-input联动,默认选中的那种,要先拿到联动‘el-input’里面选中的id,才能请求表格的数据,然后我在methods里写方法,created调,一直拿不到数据)。
有两种方法:1 在第一个方法里面写第二个方法,第二个方法里面写第三个,以此类推

      2 用async 和 await(先把el-input默认显示数据的方法getcontarctList(){

 比如这是查询 PowerGridList(电网);StorageList(储能)
      async getList(){
        var PowerGridList = await resPowerGrid() (resPowerGrid是接口的方法)
        var StorageList = await getCharge() 
        if(PowerGridList.success){
           this.tractList = PowerGridList.obj;
        }
        if(StorageList.success){
           this.chioceproList = StorageList.obj.recds;
        }
        下面把字段传给后端,就ok啦
      }
      
      
      很感谢大家~
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题