• Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

State management in react-scan codebase.

Lomanu4 Оффлайн

Lomanu4

Команда форума
Администратор
Регистрация
1 Мар 2015
Сообщения
1,481
Баллы
155
In this article, we review how the store is managed in react-scan source code. The below code is picked from

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

.


export const Store: StoreType = {
wasDetailsOpen: signal(true),
isInIframe: signal(
typeof window !== 'undefined' && window.self !== window.top,
),
inspectState: signal<States>({
kind: 'uninitialized',
}),
monitor: signal<Monitor | null>(null),
fiberRoots: new Set<Fiber>(),
reportData: new Map<number, RenderData>(),
legacyReportData: new Map<string, RenderData>(),
lastReportTime: signal(0),
};

You will find Set, Map but I don’t know what signal here is. Let’s find out.

signal is imported from preact as shown below


import { type Signal, signal } from '@preact/signals';
Signals in Preact


Signals are reactive primitives for managing application state.

What makes Signals unique is that state changes automatically update components and UI in the most efficient way possible. Automatic state binding and dependency tracking allows Signals to provide excellent ergonomics and productivity while eliminating the most common state management footguns.

Signals are effective in applications of any size, with ergonomics that speed up the development of small apps, and performance characteristics that ensure apps of any size are fast by default.

Read more about

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

.

How this state is used in react-scan?


I

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

and found that it is used in 30 files.


Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.



I have picked some instances where this state is used.


Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.




// todo: update monitoring api to expose filters for component names
export function initPerformanceMonitoring(options?: Partial<PathFilters>) {
const filters = { ...DEFAULT_FILTERS, ...options };
const monitor = Store.monitor.value;
if (!monitor) return;

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.




export const Content = () => {
const isInspecting = useComputed(
() => Store.inspectState.value.kind === 'inspecting',
);

return (
<div

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.




const updateVisibility = () => {
const isFocused = Store.inspectState.value.kind === 'focused';
const shouldShow = signalWidgetViews.value.view !== 'none';
const isVisible =
(isFocused || shouldShow) &&
getHandleVisibility(
position,
signalWidget.value.corner,
signalWidget.value.dimensions.isFullWidth,
signalWidget.value.dimensions.isFullHeight,
);
About me:


Hey, my name is

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

. I study large open-source projects and create content about their codebase architecture and best practices, sharing it through articles, videos.

I am open to work on interesting projects. Send me an email at ramu.narasinga@gmail.com

My Github — 

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.



My website — 

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.



My Youtube channel — 

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.



Learning platform — 

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.



Codebase Architecture — 

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.



Best practices — 

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.



Production-grade projects — 

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.



References:



  1. Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.





  2. Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.





  3. Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.





  4. Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.




Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

 
Вверх Снизу