Date generale ale componentelor în NextJS

Există situații când mai multe componente trebuie să aibă acces la aceleași date. De exemplu, să presupunem că avem un vector cu utilizatori. Să zicem că pe o rută vrem să afișăm lista utilizatorilor, iar pe o altă rută cu parametru dinamic - descrierea unui utilizator specific după id-ul său.

Să implementăm cele descrise. Să facem următoarea structură de fișiere:

Să facem un fișier separat cu datele utilizatorilor:

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

Să facem un component pentru afișarea listei utilizatorilor:

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>;
}

Să facem un component pentru afișarea unui utilizator specific după id-ul său:

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

Este dat următorul vector:

/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',
  },
];

Realizați două componente. Să afișeze primul lista produselor, iar al doilea - descrierea detaliată a produsului.