React Hooks useEffect的使用

React Native+Taro+Typescript环境下:

TypeScript 复制代码
import React, { useState, useEffect } from 'react'
import { View, Text, Button } from '@tarojs/components'
import './index.scss'

const FlowersCard = ()=>{
  const [flowerName, setFlowerName] = useState('')
  const [flowerColor, setFlowerColor] = useState('')
  // 叶片个数
  const [bladeNum, setBladeNum] = useState(0)

  // 1. 无依赖 - 每次渲染后都执行
  useEffect(() => {
    console.log('组件渲染完成或组件更新后都会执行!')
  })

  // 2. 空依赖数组 - 仅在组件挂载时执行一次
  useEffect(() => {
    console.log('组件已挂载')
    
    // 模拟API调用
    const fetchFlowers = async () => {
      try {
        // 展示Loading并进行网络请求
        // 进行网络请求并获取页面中需要的数据
        setFlowerName(()=>'海棠')
        setFlowerColor(()=>'pink')
        setBladeNum(()=>50)
      } catch (error) {
        // 在这里隐藏Loading
      } finally {
        // 在这里隐藏Loading
      }
    }
    fetchFlowers()
    // 清理函数 - 组件卸载时执行
    return () => {
      console.log('组件即将卸载')
    }
  }, [])

  // 3. 有依赖项 - 当依赖项变化时执行
  useEffect(()=>{
    console.log("叶片的数量增加时,即bladeNum值改变时会触发这个函数的调用")
  }, [bladeNum])

  const addBladeNumber = ()=>{
    setBladeNum((preNum)=>{
      return preNum + 2
    })
  }

  return <View className='container'>
    <Text className='txt'>Flower Name is {flowerName}</Text>
    <Text className='txt'>Flower Color is {flowerColor}</Text>
    <Text className='txt'>flower Blade is {bladeNum}</Text>
    <Button className='btn' onClick={addBladeNumber}>增加叶片数量</Button>
  </View>
}

export default FlowersCard
相关推荐
Zkaisen7 小时前
mtreoCVE-2025-11953学习(目录遍历与远程命令执行)
学习·react native·react.js·metro
zzzzzz3108 小时前
react-bits 为什么会吸引前端开发者:别把动效当装饰,先把它当成页面能力
前端·react.js·动效
风月说与山鬼10 小时前
二、React入口文件(main.jsx)
前端·react.js
张元清1 天前
React useTimeout Hook:声明式 setTimeout 与自动清理 (2026)
javascript·react.js
嘟嘟07171 天前
JWT 登录认证完整流程(React + Vite 实战复习)
react.js·vite
meilindehuzi_a1 天前
React JWT 登录鉴权实战:从无状态 HTTP 到路由守卫、Zustand 与 Axios 拦截器
前端·react.js·http
张元清2 天前
React useEventListener Hook:类型安全的 DOM 事件监听 (2026)
javascript·react.js
l1m0_2 天前
React+Tailwind+AI 实战:连锁餐饮管理后台从零到一开发复盘
前端·react.js·ui·ai·ai设计
FungLeo2 天前
React 管理后台实战 · 多角色后台的菜单和路由怎么按角色收口?配置表驱动,新增权限不碰业务代码
前端·react.js·多角色菜单
FungLeo2 天前
React 管理后台实战 · 前端请求层怎么写?401 静默刷新、token 并发竞争、强制改密拦截一次说清
前端·react.js·前端框架