|
@@ -0,0 +1,48 @@
|
|
|
+import { useState, useCallback, useEffect } from "react";
|
|
|
+/**
|
|
|
+ * useCallBack
|
|
|
+ * 允许你在多次渲染中缓存函数的
|
|
|
+ * 只能执行一个函数
|
|
|
+ * useCallback(fn, dependencies)
|
|
|
+ */
|
|
|
+// props state
|
|
|
+function News({use,onClick,onChange}) {
|
|
|
+ useEffect(()=>{
|
|
|
+ console.log("新的执行了")
|
|
|
+ })
|
|
|
+ console.log(use,'use')
|
|
|
+ console.log(onClick,'onClick')
|
|
|
+ return (
|
|
|
+ <>
|
|
|
+ <button onClick={onClick}>修改名字</button>
|
|
|
+ <input type="text" onChange={onChange} />
|
|
|
+ </>
|
|
|
+ )
|
|
|
+}
|
|
|
+
|
|
|
+function Part4() {
|
|
|
+ let [name,setName] = useState("猪八戒");
|
|
|
+ let [count,setCount] = useState(20)
|
|
|
+ // function handleClick() {
|
|
|
+ // setName("唐僧")
|
|
|
+ // }
|
|
|
+ // function handleClick() {
|
|
|
+ // useCallback(()=>{
|
|
|
+ // setName("哪吒")
|
|
|
+ // },[])
|
|
|
+ // }
|
|
|
+ const handleClick = useCallback(()=>{
|
|
|
+ setName("哪吒")
|
|
|
+ },[])
|
|
|
+ const handleChange = useCallback(()=>{
|
|
|
+ setCount(count + 2)
|
|
|
+ },[count])
|
|
|
+ return (
|
|
|
+ <>
|
|
|
+ <h2>我叫{name}</h2>
|
|
|
+ <h4>初始值:{count}</h4>
|
|
|
+ <News use={'你好'} onClick={handleClick} onChange={handleChange} />
|
|
|
+ </>
|
|
|
+ )
|
|
|
+}
|
|
|
+export default Part4;
|