json - .map 不返回值(不是函数)

标签 json reactjs object next.js map-function

我试图将我存储在数据库中的类似博客列表返回到 nextjs 中的组件。

但是我收到错误related.map is not a function

我尝试使用 { JSON.stringify(lated) } 进行调试 这给了我 JSON 对象的响应。

{"related":{"_id":"5eab0a0b2741da18f0d3624e","title":"lorem ipsum lorem ipsum lorem ipsum lorem ipsumlorem ipsum lorem ipsumlorem ipsum lorem ipsumlorem ipsum lorem ipsumlorem ipsum lorem ipsum  ....","slug":"lorem-blog-3-one",
"postedBy":{"_id":"5e9d3833a73b2c0cec9f5e1c","name":"user1","profile":"http://localhost:3000/profile/RxAq9u5Ck"},"updatedAt":"2020-04-30T17:25:31.977Z"}}

我正在使用的功能

 const showRelatedBlogs = () => {
        return related.map((blog, i) => (
            <div className="col-md-4" key={i}>
                <article>
                    <RelatedCard blog={blog} />
                </article>
            </div> 

        ));
    };

最佳答案

您从服务器获得的响应表明您没有获得博客列表,而是获得了 1 个博客。您有 2 个选择

  1. 让您的服务器返回博客数组。所以你的 JSON 响应将是:
{
    "related": [
        {
            "_id": "5eab0a0b2741da18f0d3624e",
            "title": "lorem ipsum lorem ipsum lorem ipsum lorem ipsumlorem ipsum lorem ipsumlorem ipsum lorem ipsumlorem ipsum lorem ipsumlorem ipsum lorem ipsum  ....",
            "slug": "lorem-blog-3-one",
            "postedBy": {
                "_id": "5e9d3833a73b2c0cec9f5e1c",
                "name": "user1",
                "profile": "http://localhost:3000/profile/RxAq9u5Ck"
            },
            "updatedAt": "2020-04-30T17:25:31.977Z"
        },
        {
            "_id": "5eab0a0b2741da18f0d3624e",
            "title": "lorem ipsum lorem ipsum lorem ipsum lorem ipsumlorem ipsum lorem ipsumlorem ipsum lorem ipsumlorem ipsum lorem ipsumlorem ipsum lorem ipsum  ....",
            "slug": "lorem-blog-3-one",
            "postedBy": {
                "_id": "5e9d3833a73b2c0cec9f5e1c",
                "name": "user1",
                "profile": "http://localhost:3000/profile/RxAq9u5Ck"
            },
            "updatedAt": "2020-04-30T17:25:31.977Z"
        },
        //...
    ]
}

然后在您的组件中,您可以像以前一样使用 .map 函数。

  • 您仅显示一个博客信息。因此,您应该只显示 1,而不是映射。您的组件将如下所示:
  • // Lets say `related` is a prop
    const showRelatedBlog = ({ related }) => {
        return (
            <div className="col-md-4">
                <article>
                    <RelatedCard blog={related} />
                </article>
            </div> 
    
        );
    };
    

    关于json - .map 不返回值(不是函数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61564565/

    相关文章:

    json - 通过 CLI 在 BigQuery 中进行外部 UDF 调用

    javascript - 从 JQuery 中没有标题的对象访问 JSON 对象

    javascript - React 再次渲染相同的 div 元素 - 协调问题

    javascript - 我正在尝试将 pdf 文件从 Node 服务器下载到 React 客户端,但是当我打开它时,它显示空白

    ajax - 使用 jQuery 解析 JSON 响应

    javascript - 如何在 Javascript 中将属性从一个对象添加到另一个对象而不覆盖

    java - 使用 GSON 将 Java 接口(interface)转换为 JSON 字符串,而不将序列化封装在 JSON 对象中?

    c++ - 如何打印 JSON 数组

    javascript - 为什么 npm 不开始执行?

    javascript - 将数组组合成 JavaScript 中的单个对象