当前位置:   article > 正文

实现原生js,vue2,vue3,react18类组件,react函数式组件在定时器中调用接口_vue3定时调用接口

vue3定时调用接口

在原生 JavaScript 中,可以使用 setIntervalsetTimeout 函数来调用接口。下面是一个示例代码

  1. // 定义变量存储定时器
  2. let timer
  3. // 调用接口函数
  4. function fetchData() {
  5. // 执行接口请求代码
  6. }
  7. // 在页面加载时启动定时器
  8. window.onload = function() {
  9. timer = setInterval(fetchData, 3000)
  10. }
  11. // 在页面卸载时清除定时器
  12. window.onunload = function() {
  13. clearInterval(timer)
  14. }

Vue2 中,我们可以在组件的生命周期钩子中绑定和解绑定时器。下面是一个示例代码:

  1. export default {
  2. data() {
  3. return {
  4. data: []
  5. }
  6. },
  7. created() {
  8. // 在组件创建时启动定时器
  9. this.timer = setInterval(() => {
  10. this.fetchData()
  11. }, 3000)
  12. },
  13. beforeDestroy() {
  14. // 在组件销毁前清除定时器
  15. clearInterval(this.timer)
  16. },
  17. methods: {
  18. async fetchData() {
  19. // 执行接口请求代码
  20. const res = await axios.get('/api/data')
  21. this.data = res.data
  22. }
  23. }
  24. }

Vue3 中,我们可以使用 onMounted 和 onUnmounted 钩子来绑定和解绑定时器。下面是一个示例代码:

  1. import { onMounted, onUnmounted } from 'vue'
  2. export default {
  3. data() {
  4. return {
  5. data: []
  6. }
  7. },
  8. setup() {
  9. let timer = null
  10. onMounted(() => {
  11. // 在组件创建时启动定时器
  12. timer = setInterval(() => {
  13. this.fetchData()
  14. }, 3000)
  15. })
  16. onUnmounted(() => {
  17. // 在组件销毁前清除定时器
  18. clearInterval(timer)
  19. })
  20. async function fetchData() {
  21. // 执行接口请求代码
  22. const res = await axios.get('/api/data')
  23. this.data = res.data
  24. }
  25. return {
  26. fetchData
  27. }
  28. }
  29. }

在 React 中,我们可以使用 useEffect 钩子来绑定和解绑定时器。下面是一个示例代码:

  1. import { useEffect, useState } from 'react'
  2. export default function MyComponent() {
  3. const [data, setData] = useState([])
  4. useEffect(() => {
  5. let timer = setInterval(() => {
  6. fetchData()
  7. }, 3000)
  8. return () => {
  9. clearInterval(timer)
  10. }
  11. }, [])
  12. async function fetchData() {
  13. // 执行接口请求代码
  14. const res = await axios.get('/api/data')
  15. setData(res.data)
  16. }
  17. return <div>{data}</div>
  18. }

在 React 中,我们也可以使用函数式组件来调用接口,并使用 useEffect 钩子来绑定和解绑定时器。下面是一个示例代码:

  1. import { useEffect, useState } from 'react'
  2. export default function MyFunctionalComponent() {
  3. const [data, setData] = useState([])
  4. useEffect(() => {
  5. let timer = setInterval(() => {
  6. fetchData()
  7. }, 3000)
  8. return () => {
  9. clearInterval(timer)
  10. }
  11. }, [])
  12. async function fetchData() {
  13. // 执行接口请求代码
  14. const res = await axios.get('/api/data')
  15. setData(res.data)
  16. }
  17. return <div>{data}</div>
  18. }

注意:在定时器内部的函数中,请确保不要直接使用组件中的状态变量,因为组件状态变量可能已经被卸载。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/294643
推荐阅读
相关标签
  

闽ICP备14008679号