context.params.id выдает ошибку в nextjs. не удается определить свойство ‘id’ неопределенного

#javascript #html #json #reactjs #next.js

#javascript #HTML #json #reactjs #next.js

Вопрос:

Я пытаюсь извлечь данные из файла json (response.json), который выполняется в localhost:8000 / response.json. Вот мой код в pages/test.js:

 import React from "react";
import Link from "next/link";
import Image from "next/image";
import Card from "@material-ui/core/Card";
import CardActions from "@material-ui/core/CardActions";
import CardContent from "@material-ui/core/CardContent";
import CardMedia from "@material-ui/core/CardMedia";
import Grid from "@material-ui/core/Grid";
import Typography from "@material-ui/core/Typography";
import { makeStyles } from "@material-ui/core/styles";
import Container from "@material-ui/core/Container";
import _ from "lodash"

// components

import Navbar from "components/Navbars/AuthNavbar.js";
import Footer from "components/Footers/Footer.js";

export const getStaticPaths = async () => {
  const res = await fetch("http://localhost:8000/response.json");
  const data = await res.json();

  const paths = data.data.map((gallery) => {
    return {
      params: { id: gallery.id },
    };
  });

  return {
    paths: paths,
    fallback: false,
  };
};

export const getStaticProps = async (context) => {
  
  const id = context.params.id;
  const res = await fetch("http://localhost:8000/response1.json");
  const data = await res.json();
  
  const thumbnail_ = data.data.filter(parentid => parentid.parent_id == id)
  return {
    props: { image_data: thumbnail_ },
  };
  
};


export default function Landing({ image_data }) {
    console.log(image_data)
    return (
    <div>
    </div>
);
}
 

Мой файл response.json:

 {
    "data": [
        {
            "collection": null,
            "id": 1,
            "image_thumbanil": "https://images.pexels.com/photos/434090/pexels-photo-434090.jpeg?auto=compressamp;cs=tinysrgbamp;dpr=1amp;w=500",
            "images_id": null,
            "item": null,
            "name": "Animals",
            "title": "Animals"
        },
        {
            "collection": null,
            "id": 2,
            "image_thumbanil": "https://images.pexels.com/photos/5703286/pexels-photo-5703286.jpeg?auto=compressamp;cs=tinysrgbamp;dpr=1amp;w=500",
            "images_id": null,
            "item": null,
            "name": "Birds",
            "title": "Birds"
        },
        {
            "collection": null,
            "id": 3,
            "image_thumbanil": "https://images.pexels.com/photos/3802510/pexels-photo-3802510.jpeg?auto=compressamp;cs=tinysrgbamp;dpr=1amp;w=500",
            "images_id": null,
            "item": null,
            "name": "Car",
            "title": "Cars"
        },
        {
            "collection": null,
            "id": 4,
            "image_thumbanil": "https://images.pexels.com/photos/40904/bmw-k-1300-metallic-motorcycle-40904.jpeg?auto=compressamp;cs=tinysrgbamp;dpr=1amp;w=500",
            "images_id": null,
            "item": null,
            "name": "Bikes",
            "title": "Bikes"
        },
        {
            "collection": null,
            "id": 5,
            "image_thumbanil": "https://images.pexels.com/photos/3220368/pexels-photo-3220368.jpeg?auto=compressamp;cs=tinysrgbamp;dpr=1amp;w=500",
            "images_id": null,
            "item": null,
            "name": "Fishes",
            "title": "Fishes"
        },
        {
            "collection": null,
            "id": 6,
            "image_thumbanil": "https://images.pexels.com/photos/1040880/pexels-photo-1040880.jpeg?auto=compressamp;cs=tinysrgbamp;dpr=1amp;w=500",
            "images_id": null,
            "item": null,
            "name": "Actors",
            "title": "Actors"
        },
        {
            "collection": null,
            "id": 7,
            "image_thumbanil": "https://images.pexels.com/photos/6896193/pexels-photo-6896193.jpeg?auto=compressamp;cs=tinysrgbamp;dpr=1amp;w=500",
            "images_id": null,
            "item": null,
            "name": "Actresses",
            "title": "Actresses"
        },
        {
            "collection": null,
            "id": 8,
            "image_thumbanil": "https://images.pexels.com/photos/37859/sailing-ship-vessel-boat-sea-37859.jpeg?auto=compressamp;cs=tinysrgbamp;dpr=1amp;w=500",
            "images_id": null,
            "item": null,
            "name": "Ships",
            "title": "Ships"
        }
    ]
}
 

Ошибка в том, что get is:
Ошибка типа: не удается прочитать свойство ‘id’ неопределенного
отображение ошибки в браузере

Моя цель — отображать изображения с parent_id = 1, я хочу, чтобы этот идентификатор увеличивался на единицу при каждом запуске программы. Например.) когда я запускаю следующее приложение, я хочу получить элементы отображения с parent_id = 1, а затем 2 и так далее..

Ответ №1:

Если вы используете параметры из getStaticProps страницы, ваш js-файл должен быть назван иначе [id].js .

Документ здесь.

Комментарии:

1. О, моя ошибка. Спасибо, Эммануэль, теперь это сработало.