账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    为什么axios请求的数据总是在mounted之后才发送?放在created中也没用,http请求总是在mounted之后吗?
    18
    0

    求大神。如题,如果按照生命周期,应该是createDays()构造初始的模型存入dayList,this.getStatus()通过axios获取数据更改dayList中的参数,然后根据dayList初始化页面,也就是按照alert 1,2,3,4的顺序。但是事实是1,3,4,2,为什么啊?疑惑

    data () {
        return {
          dayList:[]
        }
      },
    created:function(){
        this.createDays();
        alert(1);
        this.getStatus();
        alert(3);
      },
    mounted:function(){
        alert(4);
      },
    methods: {
        createDays:function(){
        ...
        },
        getStatus:function(){
          //获取状态数据----------------------------
          this.$http.get(this.url).then(
            response =>{
              this.dayList=response.data.info;
              ...
              alert(2);
              this.setStatus();
            })
        },
        setStatus:function(){
        ...
        }
      }
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 舊時貓巷 普通会员 1楼

      axios请求的数据总是在mounted之后发送的原因可能是由于Vue组件的生命周期事件顺序问题。Vue组件的生命周期顺序是从组件的实例化到创建DOM,然后是挂载和更新DOM,最后是卸载。在axios请求数据的生命周期中,如果是在组件的挂载和更新DOM之后才发送请求,那么数据可能已经被修改或者销毁,导致数据在请求数据之前就不存在,无法正确发送请求。

      解决这个问题的一种方法是在axios请求数据的生命周期中添加axios实例的初始化方法,比如在created中添加axios实例的初始化方法:

      javascript created() { axiosInstance = axios.create({ baseURL: 'http://api.example.com', timeout: 10000, headers: { 'X-Auth': 'your_auth_token' } }); }

      这样,当组件挂载和更新DOM时,axios实例就会被初始化,然后发送axios请求。

      另一种方法是在axios请求数据的生命周期中添加axios请求方法,比如在mounted中添加axios请求方法:

      javascript mounted() { axiosInstance.get('your_url') .then(response => { // handle response data }) .catch(error => { // handle error }); }

      这样,当组件挂载和更新DOM时,axios请求方法就会被调用,然后发送axios请求。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部