[Vue3] hooks

App.vue

<template>
  <!-- 设定Person组件是否显示 -->
  <Person /> 
</template>
  
<script lang="ts" setup name="App">
  import Person from './components/Person.vue';
  
</script>

<style scoped>
/* 可以添加一些样式 */
</style>

新建文件夹:

src/hooks

新建文件:

hooks/useDog.ts

import { reactive } from 'vue'
import axios from 'axios'

export default function () { // 默认导出后面直接跟值,不用函数名
    // data
    let dogList = reactive([
        'https://images.dog.ceo/breeds/spaniel-cocker/n02102318_9680.jpg'
    ])
  
    function getDog() {
        // 发请求以获得图片
        axios.get('https://dog.ceo/api/breeds/image/random')
        dogList.push
        // try {
        //   let picture = await axios.
        // }
  }

  // return anything
  return {dogList, getDog}
}

hooks/useSum.ts

import { ref } from 'vue'

export default function () {
    // data
    let sum = ref(0)

    // function
    function add() {
    sum.value += 1
    }

    // return anything
    return {sum, add}
}

Person.vue

<template>
    <div class="person">
      {{ sum }}
      <button @click="add">+1</button>
      <hr>
      <img v-for="(dog, index) in dogList" :src="dog" :key="index">
      <br>
      <button @click="getDog">One more doge</button>
    </div>
</template>

<script lang="ts" setup name = "Person">
  import useSum from '@/hooks/useSum'
  import useDog from '@/hools/useDog'

  const {sum, add} = useSum()
  const {dogList, getDog} =useDog()
</script>

<style scoped>
  img {
    height: 100px;
    margin-right: 10px;
  }
</style>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值