reactjs - React Hooks - UseState - 将对象从子级传递给父级
问题描述
我正在尝试使用 Hooks 和功能组件在子组件和父组件之间传递数据。
在我的父组件中,我有以下内容:-
import React, {useState} from "react"
import Card from './Card';
const CardsBoard = () => {
const { ratingObj, setRatingObj } = useState({});
console.log(ratingObj);
const cardInfo1 = {
.......
}
const cardInfo2 = {
.......
}
return (
<div className="container-fluid justify-content-center">
<div className="row">
<div className="col-md-6">
<div>
<h4>Player 1</h4>
</div>
<Card cardInfo={cardInfo1} onClick={() => setRatingObj(ratingObj)} />
</div>
<div className="col-md-6">
<h4>Player 2</h4>
<Card cardInfo={cardInfo2} onClick={() => setRatingObj(ratingObj)}/>
</div>
</div>
<div className="row top-buffer">
<div className="col-md-12 text-center">
<button id="startGameBtn" name="StartGameButton" className="btn btn-secondary">START GAME</button>
</div>
</div>
</div>
)
}
export default CardsBoard
然后在我的子组件中,我有以下内容:-
import React from "react"
const Card = ({ cardInfo, onClick }) => {
return (
<div className="card text-center shadow">
<h4 className="card-title">{cardInfo.title}</h4>
<div className="overflow">
<img src={cardInfo.image} alt={cardInfo.image} className="card-image" />
</div>
<div className="card-body text-dark">
<div className="container-fluid justify-content-center card-rating-text">
{
cardInfo.ratings.map(row => (
<div className="row" key={row[0].title}>
<div className="col-md-4 text-left">{row[0].title}</div>
<div className="col-md-2 text-left card-rating-color" onClick={() => onClick(cardInfo.player, row[0].title, row[0].rating)} >{row[0].rating}</div>
<div className="col-md-4 text-left">{row[1].title}</div>
<div className="col-md-2 text-left card-rating-color" onClick={() => onClick(cardInfo.player, row[1].title, row[1].rating)}>{row[1].rating}</div>
</div>
))
}
</div>
</div>
</div>
)
}
export default Card
目前我收到一个错误:-
Uncaught TypeError: setRatingObj is not a function
at onClick (CardsBoard.js:58)
at onClick (Card.js:30)
如何将 onClick 对象从子级传递给父级?
感谢您的帮助和时间
解决方案
改变
const { ratingObj, setRatingObj } = useState({});
至
const [ ratingObj, setRatingObj ] = useState({});
useState
返回一个形状为 [state, setStateFunc] 的二元素数组,因此您必须对其应用数组解构。
推荐阅读
- php - Laravel 8 - 干预/图像 - 未定义类型“图像”
- javascript - 从 iframe 传递 URL 参数
- r - 如何通过匹配来自另一个数据帧的整个列中的字符串来检索一个数据帧中的值?
- apache-kafka - 我应该如何将 clickhouse 连接到 Kafka?
- php - 如何找到最接近的结果?
- javascript - 自动选择 jquery select2 中的选项,如果下拉列表中只有一个选项,而不点击它,页面加载
- reactjs - 失败的道具类型:提供给`GlobalState`的`array`类型的无效道具`children`
- angular - Bootstrap 网格系统类不会将其更改应用于屏幕尺寸更改
- node.js - 使用, .then 但代码仍然乱序运行
- sql - Teradata 过程循环遍历查询结果