Вопрос:
Не подскажите, в рамках кастомной фронтенд-разработки можем ли мы переопределить компонент, который находится на маршруте “#/ds/”? Аналогично рутовому компоненту Root.tsx.
Ответ:
Верно, компонент зовется AtlasList. Создайте у себя в bmr в ds_res компонент src/ds_res/AtlasList.tsx (c export default) и он будет отдавать в рендере то, что вы захотите, отменяя стандартное поведение списка атласов.
JavaScript
import React from 'react';
const AtlasList = (props) => {
return (
<>test</>
)
}
export default AtlasList;
Вопрос:
Может, нам нужно обернуть этот компонент в декоратор?
Ответ:
Ну, подразумевается, что декоратор будет работать в более поздних версиях. А так как в более поздних версиях компонент и так есть, то… У вас же переопределен Root.tsx? там есть компонент RootContent, который берет класс компонента для activeTab. напишите if для случая с ds и прокиньте свой собственный класс в тамошний React.createElement.
Вопрос:
Я RootContent не использую:
Ответ:
Ну тогда отлов выбранных сегментов в урле полностью лежит на вас. но вообще в пропсах Root изначально есть проп tabs - это как раз разделы в левой панели в админке. Еще и activeTab есть кстати.
Так что вот эту логику RootContent вам все равно так или иначе нужно будет реализовать
public render() {
const {activeTab, tabs, activeTabIndex, summary, loading, error} = this.props;
if (error) return <RootContentError error={error}/>;
if (loading) return <RootContentLoading/>;
return (
<section className={cn('RootContent', {[activeTab?.key]: activeTab?.key})}>
{activeTab === null && <RootTabss tabs={tabs} activeTabIndex={activeTabIndex} summary={summary?.data}/>}
{activeTab !== null && React.createElement(activeTab.bodyElementClassCached, null)}
</section>
);
}