używam przykład paska bocznego przewidzianej w oficjalnej dokumentacji reagować-Router-V4 jako inspiracja https://reacttraining.com/react-router/web/example/sidebarJak korzystać z tras zagnieżdżonych w celu dodania treści do strony bez usuwania zawartości poprzedniej trasy z react-router-v4?
1- więc początkowy adres URL mojej aplikacji będzie: localhost:3000/search-page/Lists
2- mam lista klikalne linki które po kliknięciu wyświetlacz klikniętego dane na pasku bocznym, a gdy to nastąpi URL zostanie zaktualizowany: localhost:3000/search-page/Lists/itemList1selected
3- i następnie nacisnąć na przycisk „Pokaż listę numer 2”, aby wyświetlić nową listę
4 - moim celem jest użycie tras zagnieżdżonych, gdy kliknę link z "Listy numer 2". byłoby dołączyć go pod wybranym z „numerem 1” Lista pozycji ... i zaktualizować adres URL w tym samym czasie: localhost:3000/search-page/Lists/itemList1selected/itemList2selected
Oto mój bieżący kod:
class MyComponent extends Component {
constructor(props) {
super(props);
this.state = {
showListButtonPressed: true
};
this.showTheOtherList = this.ShowTheOtherList.bind(this);
}
showTheOtherList() {
this.setState({
showListButtonPressed: !this.state.showListButtonPressed
});
}
render() {
const dataList1 = dataFromDataBase
.allItemsFromList1()
.map(list1 => ({
path: `${this.props.match.params.type}/${list1.id}`,
mainList1:() => (
<div>
{`${list1.company} ${list1.name} ${list1.price}`}
</div>
),
sidebarList1:() => (
<div>
<h3>item List 1 selected</h3>
{list1.company}
</div>
)
}));
const dataList2 = fakeFlightApiDataTesting
.allItemsFromList2()
.map(list2 => ({
path: `${this.props.match.params.type}/${list2.id}`,
mainList2:() => (
<div>
{`${list2.company} ${list2.name} ${list2.price}`}
</div>
),
sidebarList2:() => (
<div>
<h3>item List 2 selected</h3>
{list2.company}
</div>
)
}));
return (
<div style={{ display: 'flex' }}>
<div style={{ width: '20%' }}>
{dataList1.map(route => (
<div>
<Route
key={route.path}
path={`/search-page/${route.path}`}
exact={route.exact}
component={route.sidebarList1}
/>
</div>
))}
{dataList2.map(route => (
<div>
<Route
key={route.path}
path={`/search-page/${route.path}`}
exact={route.exact}
component={route.sidebarList2}
/>
</div>
))}
</div>
<div>
// Switch the lists when button is pressed
{this.state.showListButtonPressed ? (
<div>
<ul>
{dataList1.map(route => (
<li key={route.path}>
<Link to={`/search-page/${route.path}`}>
{route.mainList1()}
</Link>
</li>
))}
</ul>
<button onClick={this.showTheOtherList}>
Switch Lists
</button>
</div>
) : (
<div>
<ul>
{dataList2.map(route => (
<li key={route.path}>
<Link to={`/search-page/${route.path}`}>
{route.mainList2()}
</Link>
</li>
))}
</ul>
<button onClick={this.showTheOtherList}>
switch Lists
</button>
</div>
)}
</div>
</div>
);
}
}
oto kilka screenów mieć lepszy pomysł:
Jestem rzeczywiście próbuje przystosować oficjalna React Router v4 https://reacttraining.com/react-router/web/example/recursive-paths do mojego problemu. Czy masz pojęcie, jak to wdrożyć? – AziCode
Zanim zaczniesz coś implementować, wyjaśnij, co próbujesz osiągnąć, używając interfejsu użytkownika. Na twoje pytanie odpowiadają różne podejścia i przykłady. Sądzę, że próbujesz pokazać tylko 2 poziomy, prawdopodobnie lotniska przylotów i odlotów, ale te poziomy niekoniecznie miały być zagnieżdżone. Tylko zgadnij. –
Wydaje mi się, że podałem wiele szczegółów w moim pytaniu, a ja wyjaśniłem kod, a nawet zdjęcia wyjaśniające, jaki jest mój cel. Odpowiedź Treya jest tym, który pokazał mi właściwy kierunek i możesz wybrać tylko jedną odpowiedź. A tak na marginesie, wysłany przez Ciebie przykład pochodzi z oficjalnej dokumentacji, więc nie daje nic nowego. – AziCode