⊗jsrtPmRtDR 45 of 47 menu

Изтриване на маршрут в React Router

Функцията за изтриване на данни от хранилището ние написахме. Нека сега добавим в оформлението на страницата на продукта част от код с бутон за изтриване на продукта. Ще го добавим веднага след бутона за редактиране. Ще обгърнем и двете форми с бутони в див #control. След това в action ще запишем стойност 'delete'. Също така ще добавим диалогов прозорец, за да може потребителят да потвърди още веднъж - дали иска да изтрие продукта:

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

Добавете също и стилове в нашия CSS файл:

div#control { display: flex; } button { margin-right: 5px; }

А сега ще създадем нов маршрут за изтриване на продукта. За това отворете папката routes и създайте в нея файл delete.jsx. Нека добавим в него веднага импорт на redirect и функцията за изтриване deleteProduct:

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

И след това, естествено, пишем нашата функция action, която ще извика deleteProduct по id, а след изтриването ще ни пренасочи към началната страница:

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

Остава само да отворим main.jsx. Да импортираме нашия action:

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

И да го зададем като стойност за метода action на маршрута за изтриване. Самият обект на маршрута ще добавим в края на масива children:

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

Сега можем да кликнем върху някой продукт и да го изтрием с помощта на бутона за изтриване. Можете да погледнете в localforage панела на разработчика и да се убедите в това.

Вземете приложението, създадено от вас в задачите към предишните уроци. Използвайки материалите от урока, добавете бутон за изтриване на студент, направете нов маршрут за изтриване, добавете го в дъщерните маршрути. Уверете се, че всичко работи.

Български
AfrikaansAzərbaycanবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне