反应:object 抛出“.keys 不是函数错误”
React: object throws ".keys is not a function Error"
我知道这个错误可能很常见并且之前已经回答过几次,但我找不到解决方案。
我的代码总是抛出这个错误:“.map 不是一个函数”。我知道发生这种情况是因为数据不是数组。所以我试图用 .keys 函数解决这个问题,但这会引发“.keys 不是函数”错误。我在 parent 组件中声明了 const 数据,并想在 child 组件中使用它。
我认为我的错误是由于对 .keys 的错误使用。但经过大量谷歌搜索后,我仍然没有更进一步。
这是我的 Child-Code:
import React from "react";
import Card from 'react-bootstrap/Card';
import Col from 'react-bootstrap/Col';
import Row from 'react-bootstrap/Row';
import Container from 'react-bootstrap/Container';
import {Link} from 'react-router-dom'
const PostsRow = (data) => {
{return (
<Container>
<Row>
{data.keys(data).map((data) => {
console.log(data + "is mount")
return (
<Col className="col-6 col-md-6 col-lg-3 card">
<Link to={data.url}>
<Card className=" text-center ">
<Card.Img variant="top" src={data.imagesrc} />
<Card.Body>
<Card.Title>{data.title}</Card.Title>
</Card.Body>
</Card>
</Link>
</Col>
);
})}
</Row>
</Container>
);
};
export default PostsRow;
这是home.jsx (parent):
import React from "react";
import './route.css';
import PostsRow from "../components/Content/PostsRow";
const Home = () => {
const data = {
title: "Ersti",
imagesrc: "./490.jpg",
url: "/meineposts"
};
return (
<div>
<PostsRow data={data}/>
</div>
);
};
export default Home;
只要在 PostsRow.jsx 中声明了 const 数据,这就可以正常工作,但是当我尝试在 Home.jsx 中声明它并使用 props 时,就会抛出上述错误。
PostsRow 将使用 props 调用,data
是它的 属性。所以你必须像
一样使用它
const PostsRow = ({data}) => {
并且您必须将数据转换为数组,例如
const data = [{
title: "Ersti",
imagesrc: "./490.jpg",
url: "/meineposts"
}];
因为data
是一个对象。要获取它的密钥,您应该这样写:Object.keys(data)
.
而且,你在 props 解构中有一个错字:它应该是 ({data})
。
你的示例数据只是一个对象,不是数组,所以你不需要在这里使用map
或Object.keys
,你可以简单地写:
<Col className="col-6 col-md-6 col-lg-3 card">
<Link to={data.url}>
<Card className="text-center">
<Card.Img variant="top" src={data.imagesrc} />
<Card.Body>
<Card.Title>{data.title}</Card.Title>
</Card.Body>
</Card>
</Link>
</Col>
我知道这个错误可能很常见并且之前已经回答过几次,但我找不到解决方案。
我的代码总是抛出这个错误:“.map 不是一个函数”。我知道发生这种情况是因为数据不是数组。所以我试图用 .keys 函数解决这个问题,但这会引发“.keys 不是函数”错误。我在 parent 组件中声明了 const 数据,并想在 child 组件中使用它。
我认为我的错误是由于对 .keys 的错误使用。但经过大量谷歌搜索后,我仍然没有更进一步。
这是我的 Child-Code:
import React from "react";
import Card from 'react-bootstrap/Card';
import Col from 'react-bootstrap/Col';
import Row from 'react-bootstrap/Row';
import Container from 'react-bootstrap/Container';
import {Link} from 'react-router-dom'
const PostsRow = (data) => {
{return (
<Container>
<Row>
{data.keys(data).map((data) => {
console.log(data + "is mount")
return (
<Col className="col-6 col-md-6 col-lg-3 card">
<Link to={data.url}>
<Card className=" text-center ">
<Card.Img variant="top" src={data.imagesrc} />
<Card.Body>
<Card.Title>{data.title}</Card.Title>
</Card.Body>
</Card>
</Link>
</Col>
);
})}
</Row>
</Container>
);
};
export default PostsRow;
这是home.jsx (parent):
import React from "react";
import './route.css';
import PostsRow from "../components/Content/PostsRow";
const Home = () => {
const data = {
title: "Ersti",
imagesrc: "./490.jpg",
url: "/meineposts"
};
return (
<div>
<PostsRow data={data}/>
</div>
);
};
export default Home;
只要在 PostsRow.jsx 中声明了 const 数据,这就可以正常工作,但是当我尝试在 Home.jsx 中声明它并使用 props 时,就会抛出上述错误。
PostsRow 将使用 props 调用,data
是它的 属性。所以你必须像
const PostsRow = ({data}) => {
并且您必须将数据转换为数组,例如
const data = [{
title: "Ersti",
imagesrc: "./490.jpg",
url: "/meineposts"
}];
因为data
是一个对象。要获取它的密钥,您应该这样写:Object.keys(data)
.
而且,你在 props 解构中有一个错字:它应该是 ({data})
。
你的示例数据只是一个对象,不是数组,所以你不需要在这里使用map
或Object.keys
,你可以简单地写:
<Col className="col-6 col-md-6 col-lg-3 card">
<Link to={data.url}>
<Card className="text-center">
<Card.Img variant="top" src={data.imagesrc} />
<Card.Body>
<Card.Title>{data.title}</Card.Title>
</Card.Body>
</Card>
</Link>
</Col>