【发布时间】:2019-12-03 18:53:49
【问题描述】:
我想制作一个包含 Material-ui 网格的组件。
这里有一个codeandbox:codesanbox
这是容器组件。 AllCards.js
// All the required imports here
const exer = [
{
imageurl: "https://media1.giphy.com/media/26tPtg8M3i6DPSSt2/200w.gif",
imagealt: "react-gif",
title: "Elongacion de columna",
body: "Este es un ejercicio que sirve para estirar los lumbares.",
firstButtonText: "Ver",
secondButtonText: "Ayuda"
},
{
imageurl: "https://media1.giphy.com/media/26tPtg8M3i6DPSSt2/200w.gif",
imagealt: "react-gif",
title: "Elongacion de cuadriceps",
body: "Este es un ejercicio que sirve para estirar los cuadriceps.",
firstButtonText: "Ver"
}
];
function AllCards() {
const [exercises, setExercises] = useState(null);
useEffect(() => {
setExercises(exer);
}, [exercises]);
let ret = exercises ? <CardGrid cards={exercises} /> : null;
return ret;
}
export default AllCards;
这是 CardGrid.js 组件
const CardGrid = props => {
const classes = useStyles();
const { cards } = props;
return (
<div className={classes.root}>
<Grid container spacing={3} justify="space-evenly" alignItems="center">
{cards.map((currentCard, ind) => (
<Grid key={ind} item xs>
<CardItem card={currentCard} />
</Grid>
))}
</Grid>
</div>
);
};
我的 CardItem.js 组件
const CardItem = props => {
let ret = null;
if (props.card) {
console.log("ITEM PROPS", props);
ret = ( <Card . . . )
// return { ret }; <-- THIS IS WRONG
return ret <-- SHOLD BE LIKE THIS
};
我有以下错误
Error: Objects are not valid as a React child (found: object with keys {card}). If you meant to render a collection of children, use an array instead.
in CardItem (at CardGrid.js:49)
已解决:
在 CardItem.js 中我返回 { ret }
应该是return ret
【问题讨论】:
-
看起来你正在改变
CardGrid中的excercise属性,最初的属性是props.cards,但后来它改变了props.card
标签: reactjs react-props