Odstránenie trasy v React Router

Funkciu na odstránenie údajov z úložiska sme napísali. Poďme teraz pridať do rozloženia stránky produktu časť kódu s tlačidlom na odstránenie produktu. Pridajme ju hneď po tlačidle úpravy. Obalme obidva formuláre s tlačidlami do div #control. Potom do action zapíšeme hodnotu 'delete'. Tiež pridáme dialógové okno, aby sa užívateľ ešte raz potvrdil - chce li odstrániť produkt:

routes/product.jsx<div id="control">
  <Form action="edit">
    <button type="submit">edit</button>
  </Form>
  <Form
    method="post"
    action="delete"
    onSubmit={(event) => {
      if (!confirm('Do you want to delete this product?')) {
        event.preventDefault();
      }
    }}
  >
    <button type="submit">delete</button>
  </Form>
</div>

Pridajme tiež štýly do nášho CSS súboru:

index.cssdiv#control {
  display: flex;
}

button {
  margin-right: 5px;
}

A teraz vytvoríme novú trasu pre odstránenie produktu. Preto otvorte priečinok routes a vytvorte v ňom súbor delete.jsx. Pridajme do neho hneď import redirect a funkcie odstránenia deleteProduct:

routes/delete.jsximport { redirect } from 'react-router-dom';
import { deleteProduct } from '../forStorage';

A potom, samozrejme, napíšeme našu funkciu action, ktorá bude volať deleteProduct podľa id, a po odstránení presmeruje nás na hlavnú stránku:

routes/delete.jsxexport async function action({ params }) {
  await deleteProduct(params.productId);
  return redirect('/');
}

Zostáva nám už len otvoriť main.jsx. Importovať našu action:

main.jsximport { action as deleteAction } from './routes/delete';

A nastaviť ju ako hodnotu pre metódu action trasy odstránenia. Samotný objekt trasy pridáme na koniec poľa children:

main.jsx{
  path: 'products/:productId/delete',
  action: deleteAction,
},

Teraz môžeme kliknúť na nejaký produkt a odstrániť ho pomocou tlačidla odstránenia. Môžete nahliadnuť do localforage panela vývojára a presvedčiť sa o tom.

Задание 1

Vezmite aplikáciu, ktorú ste vytvorili v úlohách k predchádzajúcim lekciám. Použitím materiálov lekcie pridajte tlačidlo na odstránenie študenta, vytvorte novú trasu pre odstránenie, pridajte ju do podriadených trás. Uistite sa, že všetko funguje.