上節課學習了useContext
函數,那這節課開始學習一下useReducer
,由於他們兩個很像,而且合做能夠完成相似的Redux庫的操做。在開發中使用useReducer
可讓代碼具備更好的可讀性和可維護性,而且會給測試提供方便。那咱們完全的學習一下useReducer
。這節課咱們只是簡單的學習一下useReducer
語法和使用方法,儘可能避免Redux
的一些操做。這樣講更容易讓不瞭解Redux
的小夥伴接受。javascript
爲了更好的理解useReducer
,因此先要了解JavaScript裏的Redcuer
是什麼。它的興起是從Redux
普遍使用開始的,但不單單存在Redux
中,可使用岡的JavaScript來完成Reducer
操做。那reducer
其實就是一個函數,這個函數接收兩個參數,一個是狀態,一個用來控制業務邏輯的判斷參數。咱們舉一個最簡單的例子。html
function countReducer(state, action) { switch(action.type) { case 'add': return state + 1; case 'sub': return state - 1; default: return state; } }
上面的代碼就是Reducer,你主要理解的就是這種形式和兩個參數的做用,一個參數是狀態,一個參數是如何控制狀態。java
瞭解reducer的含義後,就能夠講useReducer了,它也是React hooks提供的函數,能夠加強咱們的Reducer
,實現相似Redux的功能。咱們新建一個Example5.js
的文件,而後用useReducer實現計數器的加減雙向操做。(此部分代碼的介紹能夠看視頻來學習)react
import React, { useReducer } from 'react'; function ReducerDemo(){ const [ count , dispatch ] =useReducer((state,action)=>{ switch(action){ case 'add': return state+1 case 'sub': return state-1 default: return state } },0) return ( <div> <h2>如今的分數是{count}</h2> <button onClick={()=>dispatch('add')}>Increment</button> <button onClick={()=>dispatch('sub')}>Decrement</button> </div> ) } export default ReducerDemo
這段代碼是useReducer的最簡單實現了,這時候能夠在瀏覽器中實現了計數器的增長減小。瀏覽器
修改index.js
文件,讓ReducerDemo
組件起做用。dom
import React from 'react'; import ReactDOM from 'react-dom'; import Example from './Example5' ReactDOM.render(<Example />, document.getElementById('root'));
這節課就先到這裏,小夥伴們必定對useReducer
有所瞭解啦,那下節課咱們在來用一個具體的例子,實現相似Redux
的用法。jsp
轉自:https://jspang.com/posts/2019/08/12/react-hooks.html函數