怎么用axios返回的数据动态显示页面

我写这篇博客是我学完vue2后,自己尝试用写一个vue3的项目,这篇文章就是解决我写项目时遇到的第一个大难题(对我这种初学者来说),不多废话,进入正题。

解决方法直接看后面


在vue2的时候,使用axios返回的数据 我是直接通过this挂载到组件实例对象上,然后通过this实例对象拿到挂载的数据动态渲染页面。

beforeMount(){
      axios({
        url: "http://localhost:3200/getTopLists",
        method: "GET",
      }).then((res) => {
        this.$data.topList = res.data.response.data.topList;
      });
  }

<div>
      <div>啦啦啦</div>
      <div>我是买报的小行家</div>
    <span>{{this.$data.topList}}</span>
  </div>

下面是显示结果

但是到了vue3,data什么的配置项全部放到setup配置项中了,setup加载又要比其他生命周期函数都要早,所以在setup中就无法使用,所以就动态加载不了。然后我找了好久,终于找到了一种方法。方法如下

这里我第一次写的时候说要引入vuex的store,来实现,其实并不需要,只要在setup提前声明一个响应式的数据,比如

const data = reactive({

      top_list:[]

    })

然后再通过axios发请求,响应数据后赋值

axios({

      url: "http://localhost:3200/getTopLists",

      method: "get",

    }).then((res) => {

      data.top_list = res.data;

    });

 

 

下面是我第一次的写法

import {reactive} from 'vue'

const store = {
  state:reactive({
    top_list:[]
  })
}
export default store

然后

import store from "@/store/index";

//代码我没有写全,只截取了关键部分

setup(props) {
    axios({
      url: "http://localhost:3200/getTopLists",
      method: "get",
    }).then((res) => {
      store.state.top_list = res.data.response.data.topList;
      console.log(res.data.response.data);
    });
    return {
      ...toRefs(store.state),
    };
  },
<section id="recommend">
    <ul v-if="top_list">
      <li @click="" v-for="(item, index) in top_list" key="index" class="rank_list__item">
        <rankListItem  :data_id="top_list[index]"></rankListItem>
      </li>
    </ul>
  </section>

然后这用就可以达到vue2中达到的效果了。

第一次写博客,写的不好请见谅。如果看了有解决您碰到的问题的话,可以给我点个赞吗。谢谢

                                        

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值