import { useReducer } from "react"
// 申明初始数据
const initialState = {
counter: 100
}
// 定义ts类型
type ACTIONTYPES =
| { type: "increment", payload: number }
| { type: "decrement", payload: number }
// 定义类型处理函数
function counterReducer(state: typeof initialState, action: ACTIONTYPES) {
// function counterReducer(state, action) {
switch (action.type) {
case "increment":
return {
...state,
counter: state.counter + action.payload
}
case "decrement":
return {
...state,
counter: state.counter - action.payload
}
default:
throw new Error("什么鬼操作!")
}
}
// 创建reducer函数,将上面的处理函数和初始值放入参数
function UseReducerComponent() {
const [state, dispatch] = useReducer(counterReducer, initialState);
return (
<div>
<div>{state.counter}</div>
<div>
<button onClick={() => {
dispatch({
type: "increment",
payload: 10
})
}}>increment</button>
<button onClick={() => {
dispatch({
type: "decrement",
payload: 5
})
}}>decrement</button>
</div>
</div>
)
}
export default UseReducerComponent
关于hooks中reducer的使用
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 在vue3中使用vue-router来跳转时,每次都要引入vue-router,很麻烦,使用hooks封装之后,很方便。
- 本文会用实际列子对三者进行比较 1. HOC 定义:高阶组件是接收一个组件为参数,返回新组件的组件。 优点:提取公...
- 我打算实现一个显示当前时间的组件,于是用到了setInterval 上面的代码组件正常运行,但是有一点美中不足的是...