【React】hooks 之 useReducer

1 useState
2 useEffect
3 useContext
4 useReducer


4 useReducer() action 钩子

useReducer可用于提高应用性能,当更新逻辑比较复杂时,可以考虑使用useReducer。

任何有使用useState的地方,都可以替换成 useReducer。

4.1 创建初始值 initialState

const initialState = { count: 0 }

4.2 创建 reducer 函数

reducer 有两个必不可少的形参,分别是传入的值与将要执行操作的类型。

在函数中整合了所有类型的操作。

const reducerName = (state, action) => {
	switch (action.type){
		case 'add'
            return { count: state.count + 1 }
    	case 'sub'
    		return { count: state.count - 1 }
		default:
			break
    }
}

4.3 使用 useReducer

使用 useReducer 需要传入两个参数,分别是reducer函数和初始值initialState。

返回一个数组,第一项state保存的是值,第二项是dispatch

const [state, dispatch] = useReducer(reducerName, initialState);

4.4 使用state 与 调用 dispatch

通过onClick事件调用dispatch,并传入一个有操作类型的对象。

return (<>
	<p>count值:{state.count}</p>
	<button onClick={() => dispatch({ type: 'add' })}>1</button>
	<button onClick={() => dispatch({ type: 'sub' })}>1</button>
</>)

4.5 完整示例:

import React, { useReducer } from 'react';

const initialState = { count: 0 }// 初始参数

const reducerName = (state, action) => {// 创建 reduce 函数
	switch (action.type){
		case 'add'
            return { count: state.count + 1 }
    	case 'sub'
    		return { count: state.count - 1 }
		default:
			break
    }
}

const Test = () => {
    const [state, dispatch] = useReducer(reducerName,initialState);
    return (<>
		<p>count值:{state.count}</p>
        <button onClick={() => dispatch({ type: 'add' })}>1</button>
        <button onClick={() => dispatch({ type: 'sub' })}>1</button>
	</>)
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值