reactjs React context不工作,即使它已经被导入,'X被声明,但它的值从未被读取'

c9qzyr3d  于 2023-11-18  发布在  React
关注(0)|答案(1)|浏览(142)

我正在尝试为我正在创建的一个测验应用程序呈现问题。我将问题放在项目根目录下一个单独的data.js文件中的数组中。
我在src/context/中有一个quiz.js文件:

  1. import { createContext, useReducer } from "react";
  2. import questions from "../data";
  3. const initialState = {
  4. currentQuestionIndex: 0,
  5. questions,
  6. };
  7. const reducer = (state, action) => {
  8. if (action.type === "NEXT_QUESTION") {
  9. return {
  10. ...state,
  11. currentQuestionIndex: state.currentQuestionIndex + 1,
  12. };
  13. }
  14. return state;
  15. };
  16. export const QuizContext = createContext();
  17. export const QuizProvider = ({ children }) => {
  18. const value = useReducer(reducer, initialState);
  19. console.log("state", value);
  20. return <QuizContext.Provider value={value}>{children</QuizContext.Provider>;
  21. };

字符串
src/components/中的java.js文件:

  1. import Answer from "./Answer";
  2. import { useContext } from "react";
  3. import { QuizContext } from "../contexts/quiz";
  4. const Question = ({ questions }) => {
  5. const [quizState] = useContext(QuizContext);
  6. console.log("Question", quizState);
  7. const currentQuestion = quizState.questions[quizState.currentQuestionIndex];
  8. return (
  9. <div>
  10. <div className="question">{currentQuestion.question}</div>
  11. <div className="answers">
  12. <Answer />
  13. <Answer />
  14. <Answer />
  15. <Answer />
  16. </div>
  17. </div>
  18. );
  19. };
  20. export default Question;


在我的js.js文件中,'questions'值在VS Code中是灰色的,因为它没有被读取,但我不明白它为什么没有被读取。
任何帮助将不胜感激,谢谢。

rt4zxlrg

rt4zxlrg1#

Context的全部思想是你不必手动传递props,因此你不需要阅读它们。

  1. const Question = ({ questions }) => {

字符串
但是你试图在这里解构你的prop,并期待一个questions prop。这将不会到来,正确的阅读方式是使用useContext,就像你在剩下的代码中所做的那样。

相关问题