reactjs - 反应回调 onClick 无法调用可能是“未定义”的对象
问题描述
下面是我处理state
应用程序的父组件。
function App() {
const [teamData, setTeamData] = useState<any | undefined>(undefined);
return(
<>
<Teams teams={teams} onTeamClick={() => setTeamData(team)} />
<Modal teamData={teamData} />
</>
)
}
接下来是我的组件,它将状态传递回树。但是,我收到以下打字稿错误:
无法调用可能是“未定义”的对象。
type Props = {
teams: any[];
onTeamClick: () => void;
}
function Teams({teams, onTeamClick}: Props) {
return(
<div>
{teams.map(team => {
// the error is coming from onTeamClick
// No error if I change it to onTeamClick={onTeamClick}
<Team name={team.name} onTeamClick={() => onTeamClick(team)} />
})
</div>
)
}
解决方案
那是因为这里:
<Teams teams={teams} onTeamClick={() => setTeamData(team)} />
您team
从无处获取变量,因此它是undefined
.
这样做应该没问题:
<Teams teams={teams} onTeamClick={ team => setTeamData(team) } />
我对 React Hooks 不是很熟悉,但我认为你可以做到这一点,这有点短:
<Teams teams={teams} onTeamClick={ setTeamData } />
推荐阅读
- grails - Grails 一对多使用自然 ID 和引用的列名
- laravel - Terminate method in middleware in laravel
- java - 我正在尝试运行一个 spring bot 应用程序,它显示执行 DDL 的 CommandAcceptanceException 错误
- javascript - react native : infinite loop with useEffect
- python - HTTPS proxies does not work when sending requests
- aws-cdk - ECS cdk blue green deployment
- linux - Ansible - 使用 systemd(.service 文件)运行剧本
- docker - Docker Desktop - Set "Open in Browser" default page
- windows - 在 Chrome 中调试无头环境
- python-3.x - 我的 alsaaudio / pygame 音乐播放器在以普通用户身份运行但不能以 root 用户身份运行时工作