|
@@ -0,0 +1,52 @@
|
|
|
|
+import { useEffect, useState } from "react";
|
|
|
|
+/**
|
|
|
|
+ * effect 译为:"副作用"
|
|
|
|
+ * useEffect 是hook的钩子 让组件与外部系统进行同步绑定
|
|
|
|
+ * 可以实现函数组件的声明周期
|
|
|
|
+ * 相当于:componentDidMount componentDidUpdate componentDidUnMount 这三个生命周期的结合
|
|
|
|
+ * useEffect(setup, dependencies?)
|
|
|
|
+ * useEffect(()=>{},[xxx]?)
|
|
|
|
+ */
|
|
|
|
+function Item({name,home}) {
|
|
|
|
+ // 3.模拟componentDidUnMount 生命周期
|
|
|
|
+ useEffect(()=>{
|
|
|
|
+ return () => {
|
|
|
|
+ // 在组件卸载前执行完的代码
|
|
|
|
+ console.log("打印")
|
|
|
|
+ }
|
|
|
|
+ },[])
|
|
|
|
+ return (
|
|
|
|
+ <>
|
|
|
|
+ <p>我叫{name},住在{home}</p>
|
|
|
|
+ </>
|
|
|
|
+ )
|
|
|
|
+}
|
|
|
|
+function Part2() {
|
|
|
|
+ let [user,setUser] = useState("孙悟空");
|
|
|
|
+ let [open,setOpen] = useState(true);
|
|
|
|
+ // 1.每一次组件进行渲染就会执行 执行一些副作用
|
|
|
|
+ // useEffect(()=>{
|
|
|
|
+ // // 要操作的副作用
|
|
|
|
+ // console.log("useEffect 被执行了");
|
|
|
|
+ // })
|
|
|
|
+ // 2.相当于componentDidMount生命周期
|
|
|
|
+ // useEffect(()=>{
|
|
|
|
+ // console.log("第二种用法")
|
|
|
|
+ // },[])
|
|
|
|
+ // 4.监听state或props中的值改变 并且 setup函数首次渲染时执行
|
|
|
|
+ useEffect(()=>{
|
|
|
|
+ console.log("改变了")
|
|
|
|
+ },[user])
|
|
|
|
+ return open?(
|
|
|
|
+ <>
|
|
|
|
+ <h1>{user}</h1>
|
|
|
|
+ <Item name={user} home={'花果山'}></Item>
|
|
|
|
+ </>
|
|
|
|
+ ) : (
|
|
|
|
+ <>
|
|
|
|
+ <h1>{open}</h1>
|
|
|
|
+ </>
|
|
|
|
+ )
|
|
|
|
+
|
|
|
|
+}
|
|
|
|
+export default Part2;
|