Переопределения компонента в рамках кастомной фронтенд-разработки

Вопрос:

Не подскажите, в рамках кастомной фронтенд-разработки можем ли мы переопределить компонент, который находится на маршруте “#/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>
    );
  }