React入门第二天(函数式组件实现数据响应式,生命周期的监听)

数据响应式

由于函数式组件没有 this 指向,导致无法获取到 setState,无法实现数据动态化

import React from 'react'
import { useState } from 'react'
export default function App4() {
    // Hook 只能用在组件函数中的最顶层
    const [num1, setNum1] = useState(1);
    const [num2, setNum2] = useState(1);
    return (
       <>
          <h2>{num1}</h2>
          <button onClick={() => setNum1(num1 + 1)}>修改值</button>
          <hr />
          <h2>{num2}</h2>
          <button onClick={() => setNum2(num2 + 1)}>修改值</button>
      </>
    )
}

模拟 挂载完成mounted数据更新update销毁前 beforeDestroy(利用 hooks)

hooks 出现在函数式组件,函数式组件并没有生命周期函数。而类组件有生命周期函数

  • 挂载完成mounted
import React from 'react'
import { useEffect } from 'react'
export default function App() {
   // Hook 只能用在组件函数中的最顶层 
   useEffect(() => {
    // 这里主要用于发送 axios 请求
    console.log("挂载完成")
  })
}
  • 数据更新update
// 数据更新update
import React from 'react'
import { useState, useEffect } from 'react'
export default function App() {
  const [num1, setNum1] = useState(1);
  const [num2, setNum2] = useState(1); 
   // 监听一个数据
   useEffect(() => {
       console.log('num1更新')
   }, [num1])
    
   // 监听多个数据
   useEffect(() => {
    console.log('更新')
  }, [num1, num2])
    
  // 监听所有
  useEffect(() => {
    console.log('更新')
  })
   
  // 不监听
  useEffect(() => {
    console.log('更新')
  }, [])
}
  • 销毁前 beforeDestroy
import React from 'react'
import { useEffect } from 'react'
export default function App() {
  useEffect(()=>{
      return () => {
        console.log('销毁阶段');
      }
  })
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
React函数组件没有传统的生命周期函数,因为它们是纯函数,没有内部状态或方法。然而,从React 16.8版本开始,引入了Hooks,可以在函数组件中使用。Hooks提供了一组新的函数,用于处理组件的状态、副作用和生命周期等方面。 其中,最常用的Hooks是useState和useEffect。useState用于在函数组件中定义和更新状态,而useEffect用于执行副作用操作,例如订阅数据、修改DOM等。useEffect函数接收两个参数,第一个参数是一个函数,用于执行副作用操作,第二个参数是一个数组,用于设置依赖项。当依赖项发生变化时,useEffect会重新执行。 下面是一个示例,展示了如何在函数组件中使用useState和useEffect来模拟类组件生命周期: ```javascript import React, { useState, useEffect } from 'react'; const FunctionalComponent = () => { const [count, setCount] = useState(0); useEffect(() => { // componentDidMount console.log('Component mounted'); // componentWillUnmount return () => { console.log('Component unmounted'); }; }, []); useEffect(() => { // componentDidUpdate console.log('Count updated:', count); }, [count]); const handleClick = () => { setCount(count + 1); }; return ( <div> <h2>Functional Component</h2> <p>Count: {count}</p> <button onClick={handleClick}>Increment</button> </div> ); }; export default FunctionalComponent; ``` 在上述示例中,useState用于定义和更新计数器的状态。通过点击按钮,可以增加计数器的值。useEffect函数组件挂载后执行(相当于componentDidMount),并在组件卸载时执行(相当于componentWillUnmount)。第一个useEffect函数没有指定依赖项,因此只在组件挂载时执行一次。第二个useEffect函数指定了依赖项count,当count发生变化时,会重新执行。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

脑公公

您的鼓励将是我前进的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值