共计 1818 个字符,预计需要花费 5 分钟才能阅读完成。
Hooks 简介
Hooks
是 React v16.7.0-alpha
中加入的新特性。它能够让函数组件拥有自己的 state
。react 16.8.0
稳定版本支持Hooks
,本文就是演示 Hooks
在项目中的使用示例,对于内部的原理这里就不做详细说明。
useState
import React, {useState} from 'react'; | |
function Example() { | |
// 声明一个名为“count”的新状态变量 | |
const [count, setCount] = useState(0); | |
return ( | |
<div> | |
<p>You clicked {count} times</p> | |
<button onClick={() => setCount(count + 1)}> | |
Click me | |
</button> | |
</div> | |
); | |
} | |
export default Example; |
useEffect
import React, {useEffect} from 'react'; | |
function Example() { | |
// 生命周期中的 componentDidMount | |
useEffect(() => {console.log('componentDidMount') | |
},[]); | |
// 生命周期中的 componentDidMount | |
useEffect(() => {console.log('componentDidMount') | |
return ()=>{ //componentWillUnmount | |
console.log('componentWillUnmount') | |
} | |
},[]); | |
// 生命周期中的 componentDidMount 和 componentDidUpdate | |
useEffect(() => {console.log('类似于 componentDidMount 和 componentDidUpdate:') | |
}); | |
return (<div></div>); | |
} | |
export default Example; |
componentDidMount、componentDidUpdate、componentWillUnmount
的使用方法
useMemo
import React, {useMemo} from 'react'; | |
export default ({a}) => {const exampleA = useMemo(() => <div>{a}</div>, [a]); // 当 a 的值 发生变化时候才会渲染 | |
return exampleA | |
} |
useRef
import React, {useRef} from 'react'; | |
export default ({a}) => {const inputEl = useRef(null); | |
return <input ref={inputEl} type="text" /> | |
} |
react-router 获取路由参数
import React from 'react'; | |
import {withRouter} from 'react-router-dom'; | |
export default withRouter((props) => {return <div>{props.match.params.id}</div> | |
}) |
react-redux 和 redux-saga 的使用
import React, {useEffect} from 'react'; | |
import {connect} from 'react-redux'; | |
const mapStateToProps = (state) => { | |
return {list:state.list}; | |
}; | |
const mapDispatchToProps = (dispatch) => { | |
return {getList:()=>{},// 只是实例使用方式}; | |
}; | |
const useAddField = (props:Props) => {useEffect(()=>{console.log('---------- 第一次渲染') | |
this.props.list(); | |
return ()=>{console.log('------- 退出') | |
} | |
},[]) //componentDidMount | |
console.log(props.list) //redux 里面的值 | |
return <div></div> | |
}; | |
export default connect(mapStateToProps, mapDispatchToProps)(useAddField); |
参考文档
React 官网
React Hooks FAQ
参考博客
正文完
发表至:无分类
2019-07-17