需要掌握的Hooks之useReducer与useContext

简介: 需要掌握的Hooks之useReducer与useContext

这是我参与8月更文挑战的第28天,活动详情查看:8月更文挑战

什么是useReducer?

useReducer是一种让函数组件保存状态的方式,是useState的替代方案.通过useReducer可以向子组件传递dispatch.

useReducer接受什么?

接收的第一个参数是一个reducer函数,第二个参数是一个初始的状态值.

userReducer返回的是什么?

返回的是一个数组,数组的第一个元素是存储的状态,第二个元素是出发action的dispatch方法.

定义的reducer函数接收什么,返回什么?

接收两个参数,第一个是以前的状态值,第二个是action对象

function reducer(state,action) {
    switch (action.type) {
        case 'increment':
            return state + 1
        default:
            return state;
    }
}
function App(props) {
    const [count, dispatch] = useReducer(reducer,0);
    return (
        <div>
            <span>{count}</span>
            <button onClick={() => dispatch({type: 'increment'})}>+1</button>
        </div>
    )
}
复制代码

什么是useContext?

在跨组件层级获取数据时简化获取数据的代码。下面详细讲解下useContext的使用步骤。

  1. 通过createContext()创建一个xxxContext.
  2. 通过xxxContext.Provider包裹并将value传递给目标组件。
  3. 目标组件通过useContext(xxxContext)获取到value传递的值。
// 1. 创建一个xxxContext
const countContext = createContext();
// 2. 通过xxxContext.Provider 包裹传递value给目标组件
function App() {
    return (
        <countContext.Provider value={666}>
            <Foo />
        </countContext.Provider>
    )
}
// 3. 目标组件通过useContext(xxxContext)获取value传递的值
function Foo() {
    const count = useContext(countContext)
    return (
        <div>
            {count}
        </div>
    )
}
复制代码

注意:useContext的参数必须是context对象本身,调用了useContext的组件会在context值变化时重新渲染。当前的context值由上层组件中距离当前组件最近的<xxxContext.Provider>的value prop决定。当Provider的value值发生变化时,它内部的所有消费组件都会被重新渲染,并且Provider及其内部consumer组件都不受制于shouldComponentUpdate函数,当consumer组件在其祖先组件退出更新的情况下也能更新。

参考文献

相关文章
|
前端开发 JavaScript
深入理解React中的useEffect钩子函数
深入理解React中的useEffect钩子函数
114 0
|
JavaScript 前端开发 中间件
useReducer+createContext真的可以代替Redux吗?
useReducer+createContext真的可以代替Redux吗?
172 0
|
1月前
|
前端开发
深入探索React Hooks:从useState到useEffect
深入探索React Hooks:从useState到useEffect
23 3
|
4月前
|
前端开发
react中 useContext 和useReducer的使用
react中 useContext 和useReducer的使用
react中 useContext 和useReducer的使用
|
2月前
|
前端开发 开发者
useContext 钩子详解
【10月更文挑战第14天】`useContext` 是 React 中的一个 Hook,用于在组件树中传递数据,避免手动传递 props。本文从基本概念、使用方法、常见问题及解决方法等方面详细介绍了 `useContext`,并提供了代码示例,帮助开发者更好地理解和应用这一钩子。
75 5
|
5月前
|
前端开发 JavaScript 数据格式
react18【系列实用教程】Hooks (useState,useReducer,useRef,useEffect,useContext,useMemo,useCallback,自定义 Hook )
react18【系列实用教程】Hooks (useState,useReducer,useRef,useEffect,useContext,useMemo,useCallback,自定义 Hook )
106 1
|
前端开发
React-Hooks-useCallback
React-Hooks-useCallback
50 0
React-Hooks-useCallback
|
7月前
|
前端开发 JavaScript 测试技术
React Hooks之useState、useRef
React Hooks之useState、useRef
|
7月前
|
存储 前端开发 JavaScript
React Hooks的useState、useRef使用
React Hooks的useState、useRef使用
78 2
|
前端开发 JavaScript
React-Hooks-useReducer
React-Hooks-useReducer
49 0