javascript - 将 props 从子组件传递给父组件
问题描述
我正在尝试将一些道具从孩子传递给父母,我在 Youtube 上找到了这个视频:
https://www.youtube.com/watch?v=BtImABK_VHo
我尝试实现该逻辑(第二种方法),但出现了一些错误。这是代码:
我尝试渲染的方式:
<GameAnswers arrayAnswers={['Yes', 'No']} correctAnswer="Yes" />
GameAnswers.tsx
import React, { useState } from 'react';
import { ToggleButtonGroup, ToggleButton } from 'react-bootstrap';
import './css/GameAnswers.css';
type Answers = {
arrayAnswers: Array<string>,
correctAnswer: string
}
function GameAnswers(props: Answers) {
const [selectedAnswer, setSelectedAnswer] = useState("");
const handleAnswerChange = function (e: React.ChangeEvent<HTMLInputElement>) {
setSelectedAnswer(e.target.value);
}
const determineButtonVariant = function (answer: string) {
if (answer !== selectedAnswer) {
return "primary";
} else if (answer === props.correctAnswer) {
return "success";
} else {
return "danger";
}
}
return {
selectedAnswer,
render: (
<div className="game-answers">
<ToggleButtonGroup type="radio" name="answers">
{props.arrayAnswers.map(function (answer) {
return <ToggleButton
id={answer}
value={answer}
onChange={handleAnswerChange}
variant={determineButtonVariant(answer)}
>{answer}</ToggleButton>
})}
</ToggleButtonGroup>
</div>
)
}
}
export default GameAnswers;
错误:
'GameAnswers' cannot be used as a JSX component.
Its return type '{ selectedAnswer: string; render: JSX.Element; }' is not a valid JSX element.
Type '{ selectedAnswer: string; render: Element; }' is missing the following properties from type 'ReactElement<any, any>': type, props, key TS2786
视频中的这种方法有效吗?该视频来自 2021 年 8 月 1 日,所以应该是,但我收到了一些错误,如您所见,我真的不知道如何修复它们。
如果是,我错过了什么?
解决方案
推荐阅读
- javascript - 递归迭代以验证模式
- c# - JObject.ToObject 与模型状态错误
- c++ - 如何将对象数据成员传递给 C++ 中的 lambda 函数?
- javascript - 如何将图像(从 HTML 表单)转换为网站图标?
- julia - 在 Julia 中计算统一的 n 根
- php - Android-Chrome - PHPSSID cookie 值和会话 ID 之间的差异
- ios - WebImage 未更新视图 - SwiftUI (Xcode 12)
- github - 使用电子邮件更新 Github 团队
- c++ - 警告:'auto' 类型说明符是 C++11 扩展
- swift - 非沙盒应用程序 - 保存到 `/Library/Preferences` 权限被拒绝