许昌市住房和城乡建设局门户网站,前十名少儿编程机构,贵阳网络推广公司哪家强,wordpress php配置文件react hook学习记录1.什么是hooks2.State Hook3.Effect Hook4.Ref Hook1.什么是hooks (1). Hook是React 16.8.0版本增加的新特性/新语法 (2). 可以让你在函数组件中使用 state 以及其他的 React 特性 貌似现在更多的也是使用函数式组件的了#xff0c;重要
2.State Hook
imp…
react hook学习记录1.什么是hooks2.State Hook3.Effect Hook4.Ref Hook1.什么是hooks (1). Hook是React 16.8.0版本增加的新特性/新语法 (2). 可以让你在函数组件中使用 state 以及其他的 React 特性 貌似现在更多的也是使用函数式组件的了重要
2.State Hook
import React from react
function Demo(){//console.log(Demo);const [count,setCount] React.useState(0)//加的回调function add(){//setCount(count1) //第一种写法setCount(count count1 )}return (divh2当前求和为{count}/h2button onClick{add}点我1/button/div)
}export default Demo
React.useState()可以使得函数式组件也能类似于类式组件使用操作state了 (1). 语法: const [xxx, setXxx] React.useState(initValue) (2). useState()说明: 参数: 第一次初始化指定的值在内部作缓存 返回值: 包含2个元素的数组, 第1个为内部当前状态值, 第2个为更新状态值的函数 (3). setXxx()2种写法: setXxx(newValue): 参数为非函数值, 直接指定新的状态值, 内部用其覆盖原来的状态值 setXxx(value newValue): 参数为函数, 接收原本的状态值, 返回新的状态值, 内部用其覆盖原来的状态值 3.Effect Hook (1). Effect Hook 可以让你在函数组件中执行副作用操作(用于模拟类组件中的生命周期钩子) (2). React中的副作用操作: 发ajax请求数据获取 设置订阅 / 启动定时器 手动更改真实DOM 我理解的就是effect hook让函数式组件能在原本没有过的特定的生命周期中执行操作。 语法和说明: useEffect(() { // 在此可以执行任何带副作用操作 return () { // 在组件卸载前执行 // 在此做一些收尾工作, 比如清除定时器/取消订阅等 } }, [stateValue]) // 如果指定的是[], 回调函数只会在第一次render()后执行 第二个参数不传的话
import React from react
function Demo(){//console.log(Demo);const [count,setCount] React.useState(0)React.useEffect((){console.log(###)// let timer setInterval((){// setCount(count count1 )// },1000)// return (){// clearInterval(timer)// }})//加的回调function add(){//setCount(count1) //第一种写法setCount(count count1 )}return (divh2当前求和为{count}/h2button onClick{add}点我1/button/div)
}export default Demo React.useEffect相当于在第一次更新完成和数据更新的时候会被调用 如果传的是空数组 相当于只有在第一次更新完成才会触发 如果数组中传了参数例如例子中的count React.useEffect相当于在第一次更新完成和数据count更新的时候才会被调用。 其实React.useEffect还有个时期也会执行在第一个参数中如果有return一个回调的话
import React from reactimport root from ../../indexfunction Demo(){//console.log(Demo);const [count,setCount] React.useState(0)React.useEffect((){console.log(###)let timer setInterval((){setCount(count count1 )},1000)return (){console.log(bbb)// clearInterval(timer)}},[])//加的回调function add(){//setCount(count1) //第一种写法setCount(count count1 )}//卸载组件的回调function unmount(){//react17写法//ReactDOM.unmountComponentAtNode(document.getElementById(root))//react18写法root.unmount(document.getElementById(root))}return (divh2当前求和为{count}/h2button onClick{add}点我1/buttonbutton onClick{unmount}卸载组件/button/div)
}export default Demo 可以看到在组件卸载前React.useEffect又被调用了一次。所以React.useEffect可以看成是componentDidMount()componentDidUpdate()componentWillUnmount() 三个函数的组合。有点妙
4.Ref Hook (1). Ref Hook可以在函数组件中存储/查找组件内的标签或任意其它数据 (2). 语法: const refContainer useRef() (3). 作用:保存标签对象,功能与React.createRef()一样 这个相对简单点
import React from react
function Demo(){const myRef React.useRef()//提示输入的回调function show(){alert(myRef.current.value)}return (divinput typetext ref{myRef}/button onClick{show}点我提示数据/button/div)
}export default Demo