React Router-те жолды жою

Дерекқордан деректерді жою функциясын біз жаздық. Енді өнім бетінің версткасына өнімді жою үшін түймесі бар код бөлігін қосамыз. Оны түзету түймесінен кейін қосамыз. Екі түймесі бар форманы #control дивіне ораймыз. Содан кейін action-ке 'delete' мәнін жазамыз. Сондай-ақ пайдаланушыға өнімді жойғысы келетінін растау үшін диалог терезесін қосамыз:

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>

Сондай-ақ біздің CSS файлына стильдер қосамыз:

index.cssdiv#control {
  display: flex;
}

button {
  margin-right: 5px;
}

Енді біз өнімді жою үшін жаңа жол жасаймыз. Ол үшін routes бумасын ашып, онда delete.jsx файлын жасаңыз. Оған redirect және жою функциясы deleteProduct импортын бірден қосамыз:

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

Содан кейін, әрине, біз id бойынша deleteProduct-ті шақыратын және жойылғаннан кейін бізді басты бетке бағыттайтын action функциямызды жазамыз:

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

Бізге main.jsx-ті ашу ғана қалды. Біздің action-ті импорттау керек:

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

Және оны жою жолы үшін action әдісінің мәні ретінде орнату керек. Жолдың өзін біз children массивінің соңына қосамыз:

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

Енді біз кез келген өнімді басып, оны жою түймесімен жоя аламыз. Оны тексеру үшін әзірлеуші панелінің localforage-іне кіре аласыз.

Задание 1

Алдыңғы сабақтардың тапсырмаларында жасаған қолданбаңызды алыңыз. Сабақ материалын пайдаланып, студентті жою түймесін қосыңыз, жою үшін жаңа жол жасаңыз, оны балалар жолдарына қосыңыз. Барлығының жұмыс істейтініне көз жеткізіңіз.