Skip to content

feat: move from effector to virentia#25

Open
movpushmov wants to merge 1 commit into
spec-box:mainfrom
movpushmov:main
Open

feat: move from effector to virentia#25
movpushmov wants to merge 1 commit into
spec-box:mainfrom
movpushmov:main

Conversation

@movpushmov

Copy link
Copy Markdown

No description provided.

@dima117 dima117 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

пока промежуточный результат, я не досмотрел два файла:

  • model/pages/project
  • model/pages/stat

children: ReactNode;
}

const useIsOpen = (id: string) => useStoreMap($collapseState, (s) => Boolean(s[id]));

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

правильно ли понимаю, что раньше перерисовка была при изменении значения с конкретным ключом, а теперь будет всегда?


return (
<Button size="l" view="outlined" pin="circle-circle" onClick={toggleTheme}>
<Button size="l" view="outlined" pin="circle-circle" onClick={() => toggleTheme()}>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

зачем это изменение?

Comment thread src/hooks/useRouteLink.ts
const href = link.path;
// useLink возвращает open с отложенным условным типом из-за дженерика T;
// на этом уровне payload всегда { params, query }
const open = link.open as (payload: { params: T; query?: Query }) => void;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

приведение типов

Comment thread src/model/scope.ts
import { UiTheme } from '@/types';

export const $deps = createStore<StoreDependencies>(null as unknown as StoreDependencies);
export const $deps = store<StoreDependencies>(null as unknown as StoreDependencies);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

по идее, этот стор (и весь этот файл) нужно выпилить и использовать контекст стм

Comment thread src/main.tsx
<ScopeProvider value={scope}>
<RouterProvider router={router}>
<ScopeProvider scope={scope}>
<RouterProvider router={router} history={historyAdapter(history)}>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

можешь описать, какая логика работы RouterProvider?
выглядит, как будто он не только предоставляет контекст, но еще и делает какие-то сайд-эффекты

Comment thread src/Application.tsx
createRouteView({ route: statRoute, view: Stat }),
],
});

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

со старым API выглядело как условный рендеринг компонентов, а сейчас выглядит как параметр, который непонятно как обрабатывается ((

можешь рассказать подробнее, как оно работает внутри и зачем здесь контейнер Routes?

const featureQuery = controls.trackQuery<{ feature: string }>({
parameters: {
safeParse: (query) => {
const feature = query.feature;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

изменилась схема взаимодействия элементов модели:

  • раньше источником состояния о выбранной фиче был $featureCode, запускался явно через loadFeatureFx и обновление url было явным сайд-эффектом
  • теперь источник истины о коде фичи — это роут

нужно вернуть старую схему

export const projectRoute = createRoute<{ project?: string }>();

// код проекта, дедуплицированный: меняется только при смене проекта, а не query
const $projectCode = projectRoute.params.map((params) => params.project ?? '');

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

по идее, он и не должен меняться при смене query, т.к. берется из path

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants