useReducer鉤子函數
不同action類型返回不同處理行為
useState()函數返回解構為兩個值 state當前狀態 dispatch修改狀態函數
dispatch()函數參數為一個actuon對象 如 :
樣例:
import { useReducer } from 'react';
import './App.css';// 定義一個Reducer函數 根據不同的action進行不同的狀態修改 function reducer(state,action){switch(action.type){case `INC`:return state+1case `DEC`:return state-1 default:return state}
}// 調用useReducer函數將reducer函數作為參數并設定初始狀態function App() {const [state,dispatch] = useReducer(reducer,0)return (<div className="App">{state}<button onClick={()=>{dispatch({type:`INC`})}}>+</button><button onClick={()=>{dispatch({type:`DEC`})}}>-</button></div>);
}export default App;
額外傳遞參數 、
import { useReducer } from 'react';
import './App.css';// 定義一個Reducer函數 根據不同的action進行不同的狀態修改 function reducer(state,action){switch(action.type){case `INC`:return state+1case `DEC`:return state-1 case `SET`:return action.payloaddefault:return state}
}// 調用useReducer函數將reducer函數作為參數并設定初始狀態function App() {const [state,dispatch] = useReducer(reducer,0)return (<div className="App">{state}<button onClick={()=>{dispatch({type:`INC`})}}>+</button><button onClick={()=>{dispatch({type:`DEC`})}}>-</button><button onClick={()=>{dispatch({type:`SET`,payload:9527})}}>更新</button></div>);
}export default App;
流程
1.dispatch函數接收到action對象,根據不同的action對象觸發reduce函數
2.reducer管理的state變化,重新渲染ui