home.vue 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <template>
  2. <div class="home-wrap">
  3. <h1>home页面</h1>
  4. <div>pinia的user: {{ userDetail }}</div>
  5. <div>pinia的counter: {{ counter }}</div>
  6. <button @click="handlecounter">设置counter</button>
  7. <button @click="handleInfo(1)">模拟异步请求成功</button>
  8. <button @click="handleInfo(2)">模拟异步请求失败</button>
  9. <CardCpt></CardCpt>
  10. </div>
  11. </template>
  12. <script lang="ts">
  13. import { defineComponent, toRef, ref } from 'vue';
  14. import CardCpt from '@/components/Card/index.vue';
  15. import { useAppStore } from '@/store/app';
  16. import { useUserStore } from '@/store/user';
  17. export default defineComponent({
  18. components: { CardCpt },
  19. setup() {
  20. const userStore = useUserStore();
  21. const appStore = useAppStore();
  22. const userInfo = ref(userStore);
  23. const userDetail = toRef(userStore, 'detail');
  24. const counter = toRef(appStore, 'counter');
  25. const handlecounter = () => {
  26. appStore.setCounter((counter.value += 1));
  27. };
  28. const handleInfo = (num) => {
  29. userStore.setDetail(num).then(
  30. (res) => {
  31. console.log(res);
  32. },
  33. (err) => {
  34. console.log(err);
  35. }
  36. );
  37. };
  38. return { userInfo, userDetail, counter, handlecounter, handleInfo };
  39. },
  40. });
  41. </script>
  42. <style lang="scss" scoped>
  43. .home-wrap {
  44. padding: 20px;
  45. background-color: skyblue;
  46. }
  47. </style>