У меня есть пара компонентов.Когда параметр находится в пути, он будет в активном режиме, а остальные будут в неактивном режиме и покажут сообщение.
- Все компоненты присутствуют на странице.Один активен, остальные неактивны, но видимы.
- Компоненты должны читать параметры URL.
Если я использую путь, то в каждый момент я могу показать только один компонент.Первое решение, которое приходит на ум - не иметь пути, а иметь только параметры маршрута.Мне нужно прочитать параметры маршрута в app.js, чтобы показать активный / деактивный компонент, а также прочитать те же параметры в дочерних компонентах внутри app.js
Когда у нас нет пути для сопоставления: Как я могу прочитатьпараметры маршрута в app.js?Как передать параметры маршрута дочерним компонентам?
import React, { Suspense } from 'react';
import Spinner from './components/shared/Spinner';
import { RouteComponentProps, Router } from 'react-router-dom';
const Compoent1 = React.lazy(() => import(/* webpackChunkName: 'Compoent1' */ './components/Compoent1/Compoent1'));
const Compoent2 = React.lazy(() => import(/* webpackChunkName: 'Compoent2' */ './components/Compoent2/Compoent2'));
const Compoent3 = React.lazy(() => import(/* webpackChunkName: 'Compoent3' */ './components/Compoent3/Compoent3'));
export default class App extends React.Component {
render() {
return(
<div className="container">
<Suspense>
<Compoent1 routeProps={routeProps}/>
</Suspense>
<Suspense>
<Compoent2 routeProps={routeProps}/>
</Suspense>
<Suspense>
<Compoent3 routeProps={routeProps}/>
</Suspense>
</div>
);
}
}
Component1:
import React, { MouseEvent } from 'react';
import { RouteComponentProps } from 'react-router';
interface IProps {
routeProps: RouteComponentProps;
onUpdate: any;
}
export default function ProductSelector(props: IProps) {
const test = (e: MouseEvent) => {
props.onUpdate('test');
};
return(
<button onClick={test}>Next</button>
);
}