• Как браузер выполнить наложение эти стилей в данном случае?

    MrDecoy
    @MrDecoy Куратор тега CSS
    Верставший фронтендер
    Длинный ответ:
    https://developer.mozilla.org/ru/docs/Web/Performa...

    Короткий ответ:
    Для каждого узла найдёт соответствующие правила и применит наиболее приоритетное из них. В данном случае - из медиа. А вот эта формулировка "сначала одно потом другое" - лишена смысл. Файл само собой читается последовательно, а не все строки одновременно.

    Браузер сначала задаст высоту 30, а потом 60, тем самым вызвав два рефлоу?

    Рефлоу - это когда уже страница была отрисована. На первичной отрисовке это, по идее, произойдёт в первом случае при построении render tree(title в него не попадёт, так как display: none), во втором, при компоновке. Но в обоих случаях до первичной отрисовки.

    То есть куда улчше было бы использовать еще и media min-width?

    Зачем намеренно утяжелять дерево стилей?
    Ответ написан
    7 комментариев
  • Когда вы используете type, а когда - intefcace, в React?

    @uroot
    У нас на галере юзают interface когда нужно описать объект, например объект пропсов или стейта. Через interface это проще.

    А type юзают для какой-то отдельной переменной, допустим значение этой переменной может быть строго определённым, например "error" | "warning" | "good". Тогда как я и написал юзают type.
    Ответ написан
    Комментировать
  • Когда вы используете type, а когда - intefcace, в React?

    profesor08
    @profesor08
    Если надо описать некоторый перечень значений, то type:

    type ResponseStatus = "error" | "success";

    Если надо описать объект, то intefcace:

    interface ApiResponse {
        status: ResponseStatus;
    }


    И никто не запрещает написать через type:

    namespace Api {
        type Status = "error" | "success";
    
        type Response = {
            status: Status;
        };
    }
    Ответ написан
    1 комментарий
  • Есть ли разница в том, как проверить наличие window в js?

    @wonderingpeanut
    Это связано с тем, что html документ формируется на сервере. Как ты сам сказал, на сервере нет window объекта, поэтому он и ругается.

    Сделай
    const [isMobile, setIsMobile] = useState(undefined);

    и при загрузке страницы измени стейт в нужное тебе значение (юзефект)
    const [state,setState] = useState();
    useEffect(() => {
      if (typeof window !== 'undefined')
        setState(...)
    }
    Ответ написан
    4 комментария
  • Как можно использовать Proxy в react?

    Alexandroppolus
    @Alexandroppolus
    кодир
    MobX, 6 версия
    Ответ написан
    Комментировать
  • Как из строковых литералов сделать тип массива?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    В TS есть 2 варианта итерироваться по частям юнион типа - это условные типы и итерация по ключам, притом итерация по ключам ограничена типом number | string | symbol

    Условные типы проверяют условие для каждого варианта юниона, а значит позволяют трансформировать каждый из вариантов по отдельности:
    type MyFunc = <N extends string>() => (N extends string ? Field<N> : never)[];
    но возвращаемый тип так же будет юнионом:({ name: "town" } | { name: "city" })[]

    Сделать кортежный тип из юниона не выйдет, так как в юнионе не определен порядок, тип "town" | "city" это тоже самое, что и тип "city" | "town".
    Но можно сделать кортеж из кортежа:
    type MyFunc = <N extends string[]>() => {
        [K in keyof N]: N[K] extends string ? Field<N[K]> : never;
    };
    
    myFunc<["town", "city"]>()


    Ну и в реальном коде гораздо удобнее, когда дженерик выводится из аргументов, а для того что бы TS сам вывел кортежный тип из абстрактного массива, данный массив нужно помечать as const, что так же делает его readonly массивом. Но принимать аргументы через readonly там где нам не нужно их мутирорвать - это вообще хорошая практика. Полный пример будет выглядеть так:
    https://www.typescriptlang.org/play?#code/C4TwDgpg...
    Ответ написан
    Комментировать
  • Unity. Взаимодействие с объектами?

    GavriKos
    @GavriKos Куратор тега Unity
    Нужно смотреть скрипты, которые на второй сцене. Какой то из них (возможно даже стандартный юнитевый) прячет курсор.
    Ну и убедитесь что у вас нигде нет чего то вроде Screen.showCursor или Cursor.visible
    Ответ написан
    2 комментария
  • C#. Что лучше: PictureBox или Paint?

    Я считаю, что нужно сначала пытаться отобразить шарики изображением, а если по какой-либо причине картинки не загрузились, то рисовать их.
    1. Создаем переменную с изображением
    Bitmap ImageBall;
    2. При инициализации формы с игрой пытаемся загрузить в эту переменную изображение
    try
    {
        ImageBall = new Bitmap("путь до изображения");
    }
    catch (Exception ex)
    {
        MessageBox.Show(@"Не удалось загрузить: " + ex.Message, @"Ошибка при загрузке изображений!");
    }

    3. Во время генерации шарика, мы проверяем, что изображение загрузилось, иначе рисуем сами
    Bitmap bmp = new Bitmap(50,50);
    Graphics gr = Graphics.FromImage(bmp);  // это пространство на котором рисуется игра
    Rectangle rect = new Rectangle(0,0,50,50); // размер шарика
    if(ImageBall == null) // если картинка не загрузилась
    {
        gr.DrawEllipse(new Pen(Color.Black), rect); // рисуем круг
    }
    else
    {
        gr.DrawImage(ImageBalls, rect); 
    }

    5. Помещаем в PictureBox наш шарик нарисованный или с картинкой
    pictureBox1.Image = bmp
    Ответ написан
    4 комментария
  • C#. Как сохранить информацию между формами Windows Form?

    petermzg
    @petermzg
    Самый лучший программист
    Вариантов полно:
    1. Передать ссылку на экзепляр класса основного окна формы, через конструктор при создании другого окна.
    2. Передать делегат на функцию, также через конструктор
    3. В классе зависимого окна создать event и подписаться на него после создания.
    и т.д.
    Ответ написан
    4 комментария
  • Как в c# сделать так, чтобы ввод с клавиатуры запоминался в одну строчку?

    mindtester
    @mindtester Куратор тега C#
    https://www.youtube.com/watch?v=Dn9_ogWhk9s
    нет прямых аналогов, строку придется парсить
    к примеру Split через пробел (ну или ожидаемый набор возможных разделителей), и парсинг ожидаемых типов значений, типа Int32.TryParse (метод реализован для всех основных числовых типов)
    Ответ написан
    Комментировать