5_Hooks_useEffect.jsx 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import { useEffect, useState } from "react";
  2. function Test({name,age}){
  3. // 用法 3. 组建卸载前执行
  4. // 处理一些冗余
  5. useEffect(()=>{
  6. return(
  7. console.log("即将卸载组建")
  8. )
  9. },[])
  10. return(
  11. <div>
  12. <p>我的名字:{name}</p>
  13. <p>我的年龄:{age}</p>
  14. </div>
  15. )
  16. }
  17. function Effect({name=" "}){
  18. let [msg,setMsg] = useState("这是一条消息")
  19. // 用法 1. useEffect(()=>{})
  20. // 每次组件渲染时都会调用 执行一些副作用代码
  21. // useEffect(()=>{
  22. // console.log("副作用代码")
  23. // })
  24. // 用法 2. useEffect(()=>{},[])
  25. // 最主要的是第二个参数是空数组[] , 模拟生命周期 componentDidMount 挂载后调用
  26. // useEffect(()=>{
  27. // console.log("模拟生命周期 componentDidMount 挂载前后调用")
  28. // },[])
  29. // 用法 4. useEffect(()=>{},[n])
  30. // 监听 state 或者 props 发生变化 (组建初次渲染也会发生监听事件)
  31. useEffect(()=>{
  32. console.log("信息发生变化")
  33. },[msg,name])
  34. return(
  35. <div>
  36. <h3>useEffect</h3>
  37. <p>{msg}</p>
  38. <p>名字:{name}</p>
  39. <Test name={"Best"} age={17}/>
  40. <button onClick={()=>{
  41. setMsg("这是修改后的msg")
  42. }}>修改msg</button>
  43. </div>
  44. )
  45. }
  46. export default Effect;