提交学习笔记专用
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.

44 lines
1.2 KiB

3 weeks ago
  1. <template>
  2. <div class="talk">
  3. <button @click="getLoveTalk">获取一句土味情话</button>
  4. <ul>
  5. <li v-for="talk in talkStore.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. import {useTalkStore} from '@/store/loveTalk'
  14. import { storeToRefs } from "pinia";
  15. const talkStore = useTalkStore()
  16. const {talkList} = storeToRefs(talkStore)
  17. talkStore.$subscribe((mutate,state) => {
  18. console.log('talkStore里面保存的数据发生了变化',mutate,state)
  19. localStorage.setItem('talkList',JSON.stringify(state.talkList))
  20. })
  21. // 方法
  22. async function getLoveTalk(){
  23. talkStore.getATalk()
  24. // 发请求,下面这行的写法是:连续解构赋值+重命名
  25. // let {data:{content:title}} = await axios.get('https://api.uomg.com/api/rand.qinghua?format=json')
  26. // 把请求回来的字符串,包装成一个对象
  27. // let obj = {id:nanoid(),title}
  28. // 放到数组中
  29. // talkList.unshift(obj)
  30. }
  31. </script>
  32. <style scoped>
  33. .talk {
  34. background-color: orange;
  35. padding: 10px;
  36. border-radius: 10px;
  37. box-shadow: 0 0 10px;
  38. }
  39. </style>