提交学习笔记专用
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

37 lines
1.1 KiB

3 weeks ago
  1. <template>
  2. <div class="talk">
  3. <button @click="getLoveTalk">获取一句土味情话</button>
  4. <ul>
  5. <li v-for="talk in talkList" :key="talk.id">{{talk.title}}</li>
  6. </ul>
  7. </div>
  8. </template>
  9. <script setup lang="ts" name="LoveTalk">
  10. import {reactive} from 'vue'
  11. import axios from "axios";
  12. import {nanoid} from 'nanoid'
  13. // 数据
  14. let talkList = reactive([
  15. {id:'ftrfasdf01',title:'今天你有点怪,哪里怪?怪好看的!'},
  16. {id:'ftrfasdf02',title:'草莓、蓝莓、蔓越莓,今天想我了没?'},
  17. {id:'ftrfasdf03',title:'心里给你留了一块地,我的死心塌地'}
  18. ])
  19. // 方法
  20. async function getLoveTalk(){
  21. // 发请求,下面这行的写法是:连续解构赋值+重命名
  22. let {data:{content:title}} = await axios.get('https://api.uomg.com/api/rand.qinghua?format=json')
  23. // 把请求回来的字符串,包装成一个对象
  24. let obj = {id:nanoid(),title}
  25. // 放到数组中
  26. talkList.unshift(obj)
  27. }
  28. </script>
  29. <style scoped>
  30. .talk {
  31. background-color: orange;
  32. padding: 10px;
  33. border-radius: 10px;
  34. box-shadow: 0 0 10px;
  35. }
  36. </style>