MST
星途 面试题库

面试题:React中useReducer Hook如何初始化状态

在React中使用useReducer Hook实现复杂状态管理时,通常需要初始化状态。请说明如何正确初始化状态,并且给出一个简单的计数器场景下,使用useReducer Hook初始化状态的代码示例,包含reducer函数的基本结构。
35.0万 热度难度
前端开发React

知识考点

AI 面试

面试题答案

一键面试

正确初始化状态

在React中使用useReducer Hook时,初始化状态通过useReducer的第二个参数来实现。如果只传递一个值,这个值就是初始状态。如果传递一个函数,React会在首次渲染时调用这个函数,将其返回值作为初始状态。这样做的好处是可以在初始化状态时执行一些计算逻辑,而不会在每次渲染时都执行这些计算。

计数器场景代码示例

import React, { useReducer } from 'react';

// reducer函数
const counterReducer = (state, action) => {
  switch (action.type) {
    case 'increment':
      return { count: state.count + 1 };
    case 'decrement':
      return { count: state.count - 1 };
    default:
      return state;
  }
};

const Counter = () => {
  // 初始化状态
  const initialState = { count: 0 };
  const [state, dispatch] = useReducer(counterReducer, initialState);

  return (
    <div>
      <p>Count: {state.count}</p>
      <button onClick={() => dispatch({ type: 'increment' })}>Increment</button>
      <button onClick={() => dispatch({ type: 'decrement' })}>Decrement</button>
    </div>
  );
};

export default Counter;

在上述代码中:

  1. counterReducer是reducer函数,它根据接收到的action来更新状态。
  2. initialState是初始状态对象,这里计数器初始值为0。
  3. useReducer Hook接收counterReducerinitialState,返回当前状态state和用于派发actiondispatch函数。
  4. 两个按钮分别通过dispatch触发incrementdecrement动作,从而更新计数器的值。