javascript - 是否可以在另一个组件中显示来自 useState 的更新状态?
问题描述
我有这个使用的组件useState
const [answers, setAnswerFunction] = useState(options);
在 answers
此组件中更新状态后,我想使用更新后的状态并将其显示在另一个组件中。这可能吗?
我看了一个类似的问题,它说使用useContext
我还没有调查过这个,因为我从未使用过它(是否可以使用 React 中的 useState() 钩子在组件之间共享状态?)但我想知道是否会有是一个更简单的方法?
代码:
const QuestionBox = ({
question,
options,
correct,
incrementScore,
incrementResponse,
}) => {
const [response, setResponse] = useState("");
const [answers, setAnswerFunction] = useState(options);
const computeAnswer = answer => {
if (answer === correct) {
setResponse("correct");
incrementScore();
incrementResponse();
} else {
setResponse("sorry wrong!");
incrementResponse();
}
};
return (
<div className="questionBox">
<div className="question"> {question} </div>
{answers.map((answer, index) => {
return (
<button
key={index}
className="answerBtn"
type="button"
onClick={() => {
setAnswerFunction([answer]);
computeAnswer(answer);
}}
>
{answer}
</button>
);
})}
{response === "correct" ? (
<div className="correctResponse"> {response} </div>
) : (
<div className="wrongResponse"> {response} </div>
)}
</div>
);
};
export default QuestionBox;
我想answers
通过 prop 在 Result 卡上显示来自组件 abover 的状态userAnswer
:
const ResultCard = ({
score,
getQuestions,
qbank,
userAnswer
}) => {
return (
<div>
<div>You scored {score} out of 5! </div>
<div className="playBtnBox">
<button className="playBtn" type="button" onClick={getQuestions}>
Play again
</button>
</div>
<div>
{qbank.map((questionObject) => {
return (
<div>
<div className="questionBox"> {questionObject.question}</div>
<div className="resultCardCorrect"> Correct Answer: {questionObject.correct}</div>
</div>
);
})}
</div>
<div className="resultCardCorrect"> Your Answer: {userAnswer}</div>
</div>
);
};
export default ResultCard;
解决方案
推荐阅读
- c# - Azure Functions 引发启动异常 - 启动操作期间发生主机错误
- laravel - Laravel缺少[Route:destroy]所需的参数
- c# - 为 Visual Studio 注册文本文档内容提供程序
- flutter - 使用存储在变量中的列表值索引会引发错误,而直接使用列表值可以正常工作 Flutter
- wireshark - wireshark以奇怪的方式显示有效载荷数据
- java - Java swith case 对 final 字段说“需要常量表达式”
- ruby-on-rails - 什么可能导致 Rails 5 没有在 build() 中设置参数,即使它已被填写?
- vimeo - Vimeo 是否支持我的应用程序最终用户的 Android 本机播放?
- python - sklearn 错误,而 n_jobs 不是 1 使用 VScode
- c# - 如何使用托管标识将现有的 .Net Core 应用程序连接到 Azure SQL 数据库