Работа з дадзенымі ў Redux
У папярэднім раздзеле мы рэалізавалі базавую схему работы Redux і цяпер вы ведаеце асноўныя прынцыпы работы Redux прыкладання. У наступных уроках мы пачнем дапаўняць функцыянал нашага прыкладання з прадуктамі і папрацуем з дадзенымі.
Паколькі прыкладанне будзе абрастаць новымі
кампанентамі і маршрутамі, давайце зробім
з маршрутызацыяй адну рэч. Адкрыйце прыкладанне з
прадуктамі, затым файл root.jsx
. Імпартуйце
ў яго кампанент Outlet
, пры гэтым выдаліце
радкі з імпартам ProductsList
і NewProductForm
:
import { Outlet } from 'react-router-dom'
Цяпер кампанент Root
у нас будзе адлюстроўвацца
па каранёвым шляху '/'
, а ўсе іншыя кампаненты
па даччыных у Outlet
. Для гэтага крыху выправім
вёрстку дыва #main-page
для кампанента Root
:
<div id="main-page">
<h2>My Products App</h2>
<hr></hr>
<NewProductForm />
<ProductsList />
</div>
Тут мы паставім Outlet
замест
кампанентаў NewProductForm
і
ProductsList
:
<div id="main-page">
<h2>My Products App</h2>
<hr></hr>
<Outlet />
</div>
Форму для дадавання прадуктаў мы цяпер будзем
выводзіць у ProductsList
. Давайце адкрыем
файл з гэтым кампанентам і дадамо імпарт формы:
import { NewProductForm } from './NewProductForm'
А цяпер дадамо кампанент з формай прама перад спісам прадуктаў. Цяпер нашая вёрстка будзе выглядаць так:
return (
<div>
<NewProductForm />
<div>
<h2>Products</h2>
{dispProducts}
</div>
</div>
)
Дапішем стыль для класа products-list
у index.css
:
.products-list {
display: flex;
flex-direction: column;
}
Нам застаецца толькі ўнесці змены
ў галоўны кампанент App
. Адкрыем
App.jsx
і імпартуем у яго кампанент
ProductsList
:
import { ProductsList } from './parts/products/ProductsList'
Затым для нашага пакуль адзінага
маршруту, які з'яўляецца каранёвым, дадамо
ўласцівасць children
:
const router = createBrowserRouter([
{ path: '/', element: <Root />, children: [] },
])
І выпішам у якасці значэння гэтай уласцівасці
першы даччыны маршрут. У якасці шляху
ўсталюем яму 'products'
. Цяпер па гэтым
адрасе ў нас будзе адлюстроўвацца
наш спіс з прадуктамі ProductsList
:
children: [
{
path: '/products',
element: <ProductsList />,
},
],
Запусцім наша прыкладанне і пераканаемся, што
мы нічога не паламалі. У карані '/'
мы бачым
толькі загаловак. А формачка і спіс прадуктаў
у нас схаваліся па адрасе '/products'
.
Адкрыйце ваша прыкладанне са студэнтамі.
У файле root.jsx
замяніце кампаненты
StudentsList
і NewStudentForm
на Outlet
.
Хай цяпер форма для дадавання студэнта
адлюстроўваецца ў вас у StudentsList
.
Унясіце змены ў ваш галоўны кампанент
App
. Дадайце да каранёвага маршруту даччыны,
са шляхам '/students'
, па якому будзе
адлюстроўвацца ваш StudentsList
. Запусціце
прыкладанне і пераканайцеся, што ў вас усё
працуе.