Как стать автором
Обновить
27
0
Александр @cherkalexander

Пользователь

Отправить сообщение

Классная статья. Получается вы генерируете только компоненты без состояний? Вы же не можете сгенерировать компонент, а потом дописать в него JavaScript, иначе он исчезнет при очередной кодогенерации.

А точно есть разница как лучше говорить "силиконовая" или "кремневая"?)

?

А мы когда были в Индии, наш американский босс даже в такси с ноутом сидел и пытался кодить и отсылать имейлы налево и направо.

А что ещё используют за рубежом кроме LinkedIn?

Естественно, ненастоящие улыбки лучше, идиотов, которые орут на тебя "с пеной у рта"

Стабильно нестабильно)

Сейчас много способов придумали, даже компании появились, которые за небольшой процент будут помогать отправлять/получать валюту.

В статье же указан спред зарплаты, а не $4000. Ну и тут важен контекст, удалёнщикам из других стран будут платить меньше, чем их коллегам из США, это распространённая практика.

@timurnav спасибо за статью. Понимаю, что прошло уже много времени, но подскажите, а UI с подсветкой синтаксиса вы не делали на основе "ANTLR"?

 classNames={{
    "file-drop-zone_box": myClassNames.myFileDropZoneBoxClass,
    "file-drop-zone_button": myClassNames.myButtonClass,
    "file-icon": myClassNames.myFileIconClass,
    "file-box": myClassNames.myFileBoxClass,
    "file-box__file-button": myClassNames.myFileButton
    }}

Имена классов выглядят достаточно странно, где-то есть нижние подчеркивания, где-то нет, где-то подчеркивание одиночное, где-то двойное (привет БЭМ). Я бы сделал как в material ui

classNames={{
  root: '...',
  box: '...',
  button: '...',
  icon: '...',
}}

Я бы ещё добавил слоты, чтобы было можно полностью заменять реализацию компонента на кастомную. Как в material ui

https://mui.com/material-ui/api/slider/#slider-prop-slots

А так выглядит не плохо. Хотя на статью, конечно, не тянет. Для статьи было бы полезно описать как это реализовывалось и с какими трудностями столкнулись. И почему не подошли готовые библиотеки.

Там есть кнопка комментариев, внизу, она мне помогла быстро их открыть)

Попробуйте использовать с новыми Form Actions будете неприятно удивлены

Вы точно пробовали использовать useOptimistic? Ваш хук работает один в один, как и мой. И компонент обновляется только тогда, когда асинхронная функция выполнилась, а не мгновенно как в случае с useOptimistic.

WAT? Да причём тут async / await. Убрав await перед promise вы просто не дожидаетесь его выполнения и обновляете setState мгновенно. 

Вот тут песочница а тут исходники, можете поиграться.

Я имел в виду, что для useOptimistic важно чтобы метод обработчик возвращал промис. Ссылаясь на свой пример, я говорил об async/await. Вот здесь видно, как оптимистичные обновления перестают работать, если метод не возвращает промис https://app.screencast.com/6WIPVTltHTnlz.

Дык стоит разобраться, что там пошло не так. Полагаю, никакой связи именно с <form/> там нет.

Пока не понятно куда копать, создал вопрос на stack overflow.

Судя по всему, это очень примитивный хук, который можно было написать руками годы назад. Нечто подобное я даже когда-то писал. Видимо React team решили, что инструмент достаточно частотный, чтобы дать его из коробки.

Это была моя первая мысль, непонятно зачем он вообще нужен и я пошёл и написал свой хук для сравнения. В итоге выяснил, что если вызывать setState до того, как асинхронный метод завершится, ре-рендера не произойдёт, он произойдёт только, если использовать useOptimistic.

https://app.screencast.com/RvQny4z0YB9Ny

import { useCallback, useEffect, useState } from 'react';

export function useOptimistic<State, Action>(
    state: State,
    updateFn: (state: State, optimisticValue: Action) => State
): [State, (action: Action) => void] {
    const [optimisticState, setOptimisticState] = useState(state);

    useEffect(() => {
        setOptimisticState(state);
    }, [state]);

    const addOptmistic = useCallback(
        (value: Action) => {
            const optState = updateFn(optimisticState, value);
            setOptimisticState(optState);
        },
        [optimisticState, updateFn]
    );

    return [optimisticState, addOptmistic];
}

очень странный вопрос, Microsoft ввёл санкции на использование C# в России?

А вы используете гитлаб? В гитлабе, насколько я помню, автоматически на основании CodeOwner'ов формируется список ответственных в видео таблицы, где напротив каждого измененного файла написан ответственный. Получается, что автору достаточно выбрать ревьюеров из списка.

Это не уязвимость! Это фича! Поздравляю вы успешно используете Remote Code Execution уязвимость https://cqr.company/ru/web-vulnerabilities/rce/

1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Курск, Курская обл., Россия
Зарегистрирован
Активность