22.4.3 updated
关于hooks
React16.8的版本更新了Hooks功能。意味着函数式组件也可以拥有state属性。自此,类式组件基本完全可以被函数式组件替代。(除非要利用生命周期进行一些骚操作)。这也让利用React进行的开发更贴近"函数式编程"的潮流。
useState()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| function App() { const [value,setValue]= useState(0); return ( <div> <button onClick={()=>{ setValue(value+1) }}>click to add 1</button> <div> value={value} </div> </div> ); }
this.setState({value:this.state.value+1})
setValue(value+1)
|
不过来点面试题会发现其实看上去简单的东西也会有很多反直觉的坑。师哥给我丢了一道。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| function App() { const [n, setN] = useState(0); return ( <div> <h1>{n}</h1> <button onClick={() => setN(x => x + 1)}>+1</button> <button onClick={() => setTimeout(() => console.log(n), 3000)}>log</button> </div> ) }
|
useEffect()