Δρομολόγιο χωρίς διαδρομή στο React Router
Σε αυτό το μάθημα, θα εξετάσουμε ακόμη μια χρήσιμη ιδιότητα του δρομολογίου χωρίς διαδρομή.
Γνωρίζετε ότι για κάθε αντικείμενο
δρομολογίου μπορείτε να προσθέσετε μια ιδιότητα
errorElement και ως τιμή
να ορίσετε το στοιχείο που
θέλετε να εμφανίζεται όταν προκύψει
σφάλμα.
Αλλά τι γίνεται αν το errorElement
είναι το ίδιο για όλα τα δρομολόγια; Μπορούμε,
φυσικά, να το βάλουμε το ίδιο σε κάθε ένα,
ή μπορούμε να χρησιμοποιήσουμε ένα δρομολόγιο χωρίς διαδρομή,
να τυλίξουμε μέσα σε αυτό τα θυγατρικά δρομολόγια
που μας ενδιαφέρουν. Τότε, σε περίπτωση που προκύψει
σφάλμα σε ένα από αυτά, το δρομολόγιο μας
χωρίς διαδρομή θα τα πιάνει και
θα εμφανίζει το δικό του errorElement.
Ας πάμε στο αρχείο main.jsx και ας τυλίξουμε
σε ένα δρομολόγιο χωρίς διαδρομή όλα τα θυγατρικά μας δρομολόγια,
κάνοντάς τα θυγατρικά του (με τη σειρά του
αυτό το δρομολόγιο θα γίνει θυγατρικό του
ριζικού), ας μην ξεχάσουμε να του προσθέσουμε επίσης
την ιδιότητα errorElement:
const router = createBrowserRouter([
{
path: '/',
element: <Root />,
errorElement: <ErrorPage404 />,
loader: rootLoader,
action: rootAction,
children: [
{
errorElement: <ErrorPage404 />,
children: [
{ index: true, element: <Index /> },
{
path: 'products/:productId',
element: <Product />,
loader: productLoader,
},
{
path: 'products/:productId/edit',
element: <EditProduct />,
loader: editProductLoader,
action: editAction,
},
{
path: 'products/:productId/delete',
action: deleteAction,
},
],
},
],
},
]);
Πώς μπορούμε τώρα να ελέγξουμε τη λειτουργία αυτού του κώδικα;
Μπορούμε να προσθέσουμε μια γραμμή που ρίχνει
σφάλμα (μην ξεχάσετε να την αφαιρέσετε αργότερα,
όταν το ελέγξετε). Ας προσθέσουμε, για παράδειγμα,
αυτή τη γραμμή ως πρώτη γραμμή στη συνάρτηση
action για τη διαδρομή διαγραφής
προϊόντος, τότε όταν προσπαθήσουμε να διαγράψουμε
ένα προϊόν θα δούμε το σφάλμα:
export async function action({ params }) {
throw new Error('error');
await deleteProduct(params.productId);
return redirect('/');
}
Τώρα δοκιμάστε να διαγράψετε κάποιο προϊόν.
Πάρτε την εφαρμογή που δημιουργήσατε στα
παραδοτέα προηγούμενων μαθημάτων. Χρησιμοποιώντας
το υλικό του μαθήματος, τυλίξτε τα
θυγατρικά σας δρομολόγια σε ένα δρομολόγιο χωρίς διαδρομή
με την ιδιότητα errorElement και ελέγξτε
ότι λειτουργεί.