在 next.js 中使用 context Api 和 useReducer 钩子在调用 useContext 时返回 undifined

Adi*_*san 3 reactjs next.js react-context

我在 next.js 应用程序中使用 context Api 和 useReducer 钩子,当使用 contextProvider 调用 useContext 时,它会返回 undifined 。

下面是我的代码 => contextPage=>

import React, { createContext, useReducer, useContext } from 'react';
import * as types from '../constants/userConstants';

// initialized global store

export const quizContext = createContext();

// reducer

const reducer = (state, action) => {
  switch (action.type) {
    case types.USER_LOGIN_SUCCESS:
      return // user

    case types.USER_LOGOUT_SUCCESS:
      return // clear user

    default:
      return state;
  }
};

const QuizContextProvider = ({ children }) => {
  const [state, dispatch] = useReducer(reducer, {
    user: null,
  });

  return (
    <quizContext.Provider value={{ dispatch, state }}>
      {children}
    </quizContext.Provider>
  );
};

export const useQuizContext = () => useContext(QuizContextProvider);

export default QuizContextProvider;
Run Code Online (Sandbox Code Playgroud)

之后,我将我的提供程序包装在 _app.js 中。

在我的登录页面上,我无法访问它。登录页面=>

const index = () => {
  const data = useQuizContext();
  console.log(data);
  return <div></div>;
};
Run Code Online (Sandbox Code Playgroud)

这里,数据是未定义的。严重卡住了。

Vik*_*ant 5

它应该是

export const useQuizContext = () => useContext(quizContext)
Run Code Online (Sandbox Code Playgroud)