Fælles komponentdata i NextJS

Der opstår situationer, hvor flere komponenter skal have adgang til de samme data. Lad os som eksempel antage, at vi har et array med brugere. Lad os på én route vise en liste over brugere, og på en anden route med en dynamisk parameter - en beskrivelse af en specifik bruger baseret på deres id.

Lad os implementere det beskrevne. Lad os oprette følgende filstruktur:

Lad os oprette en separat fil med brugerdata:

/app/users/users.jsexport default users = [
  {
    id: 1,
    name: 'name1',
    surn: 'surn1',
  },
  {
    id: 2,
    name: 'name2',
    surn: 'surn2',
  },
  {
    id: 3,
    name: 'name3',
    surn: 'surn3',
  },
];

Lad os oprette en komponent til visning af brugerlisten:

app/users/list/page.jsximport users from '../users.js';

export default function List() {
  let list = users.map(user => {
    return <li>
      {user.name}
    </li>;
  });
  
  return <ul>
    {list}
  </ul>;
}

Lad os oprette en komponent til udskrivning af en bestemt bruger baseret på deres id:

app/users/show/[id]/page.jsximport users from '../../users.js';

export default function User({params}) {
  let user = users[params.id];
  
  return <div>
    <span>{user.id}</span>
    <span>{user.name}</span>
    <span>{user.surn}</span>
  </div>;
}
Задание 1

Følgende array er givet:

/app/prods/prods.jslet prods = [
  {
    id: 1,
    name: 'prod1',
    cost: 100,
    desc: 'desc1',
  },
  {
    id: 2,
    name: 'prod2',
    cost: 200,
    desc: 'desc2',
  },
  {
    id: 3,
    name: 'prod3',
    cost: 300,
    desc: 'desc3',
  },
];

Opret to komponenter. Lad den første vise en liste over produkter, og den anden - en detaljeret beskrivelse af produktet.