我正在尝试为我正在创建的一个测验应用程序呈现问题。我将问题放在项目根目录下一个单独的data.js文件中的数组中。
我在src/context/中有一个quiz.js文件:
import { createContext, useReducer } from "react";
import questions from "../data";
const initialState = {
currentQuestionIndex: 0,
questions,
};
const reducer = (state, action) => {
if (action.type === "NEXT_QUESTION") {
return {
...state,
currentQuestionIndex: state.currentQuestionIndex + 1,
};
}
return state;
};
export const QuizContext = createContext();
export const QuizProvider = ({ children }) => {
const value = useReducer(reducer, initialState);
console.log("state", value);
return <QuizContext.Provider value={value}>{children</QuizContext.Provider>;
};
字符串
src/components/中的java.js文件:
import Answer from "./Answer";
import { useContext } from "react";
import { QuizContext } from "../contexts/quiz";
const Question = ({ questions }) => {
const [quizState] = useContext(QuizContext);
console.log("Question", quizState);
const currentQuestion = quizState.questions[quizState.currentQuestionIndex];
return (
<div>
<div className="question">{currentQuestion.question}</div>
<div className="answers">
<Answer />
<Answer />
<Answer />
<Answer />
</div>
</div>
);
};
export default Question;
型
在我的js.js文件中,'questions'值在VS Code中是灰色的,因为它没有被读取,但我不明白它为什么没有被读取。
任何帮助将不胜感激,谢谢。
1条答案
按热度按时间rt4zxlrg1#
Context的全部思想是你不必手动传递props,因此你不需要阅读它们。
字符串
但是你试图在这里解构你的prop,并期待一个
questions
prop。这将不会到来,正确的阅读方式是使用useContext
,就像你在剩下的代码中所做的那样。