• Как обойти ошибку с типом never?

    @Ostic Автор вопроса
    return <div>{getShouldShowBtn() && <button>lioih </button>}</div>;

    подобная конструкция не подойдёт - мне необходимо именно класс добавлять и удалять, тк элемент перемещается, а не просто "есть-нет".
    если попробовать конструкцию className... Каким образом в React добавить и удалить class в зависимости от состояния?
  • Как обойти ошибку с типом never?

    @Ostic Автор вопроса
    не помогает:
    компилятор указывет, что тип <HTMLElement>несовместим с <HTMLElement | null>
    если указываешь в качестве типа <HTMLElement | null>, то он говорит, что у типа null нет свойства classList, ввожу проверку на null - if () начинаются проблемы с never
  • Почему нормализованные строки в JS не подходят для отображения пользователю?

    @Ostic Автор вопроса
    Что значит нормализовывать?

    str.normalize([form])
    Вы можете там поставить хоть cp-1251.

    для этого я специально оговорил, предвидя подобный ответ
    всегда(почти всегда) указываем UTF8,

    чтобы разговор не свернул в сторону, а у арабов или на поленезийских островах, да что там Полинезия, вот остров Пасхи и калахарские бушмены...
    а строки js - это UTF16 в памяти во время работы.

    а когда вы указываете
    <span>{variable: string}</span>
    вы указываете что-то другое, не строки JS из памяти?
    _____________________________________________________________________________

    Чтобы визуально и в коде число букавок было равно, просто в юникоде можно букву представить через 4 байта либо через больше.

    не понял мысль. При изучении Си всё начинается с ASCII, там всё ясно 128 заняты, а дальше регионально.
    Один байт = 2^8 = 256 возможных вариантов и пошло-поехало, 2байта =16 бит = 2^65536 с этим и всё понятно. Не понятно в результате как это работает...
    Вот из вики
    UTF-8 (от англ. Unicode Transformation Format, 8-bit — «формат преобразования Юникода, 8-бит»)

    8 бит! )) Как хочешь, так и понимай...
    Надо почитать тогда на эту тему. Я полагал, что сейчас на пальцах объяснят, ведь вроде объяснить как множество цифр (256, 65536, ...) отображается во множество символов - задача элементарная, а получается, что нет... Без претензий к участникам дискуссии.
  • В чем разница между FC, Styled, Class компонентами в React?

    @Ostic Автор вопроса
    Антон Спирин,
    Нет прототипом будет React.Component, а в нем много чего реализовано:

    это понятно, но можно всё это реализовать не используя слово class, точнее всё, что делается в class использует банальные function, prototype...
    а хуки как реализованы? если FC чистый, то откуда тогда берутся хуки?
    похоже на какой-то callbacks
  • В чем разница между FC, Styled, Class компонентами в React?

    @Ostic Автор вопроса
    У вас абсолютно бессмысленное сравнение получилось.

    Пытаюсь разобраться...

    Классовые компоненты имеют методы жизненного цикла, состояние и возможность работы с контекстом.

    Смотрите, ведь нет никаких Class, ведь это "синтаксический сахар" - в конце-то одно получается, что вызвать
    var obj = new function className(props){
      this.props = props;
    }

    как я понимаю:
    1. FC - это "чистая" функция, которая принимает параметры (props) и возвращает
    компонент полученный React.createElement с этими параметрами - правильно? (вариант 1,2) И всё.
    2. В остальных случаях(вариант 3,4) возвращается объект, у которого есть метод render, который и есть, собственно, FC (те FC - это просто метод render "умного" компонента). И, естественно, получается, что в объекте при вызове метода render мы можем сравнивать что-то с предыдущим "чем-то" (состоянием, свойствами, ещё чем), а в случае чистой функции мы ничего подобного не имеем - правильно?
    И получается, что оборачивая FC в Styled мы теряем все прелести FC - или нет?
  • Почему директива выдаёт ошибку (React + TS)?

    @Ostic Автор вопроса
    Антон Спирин,
    да, посмотрел
    если точнее, то
    module === "system" or --esModuleInterop
    можете пояснить директивы
    1. allowSyntheticDefaultImports
    2. esModuleInterop
    я могу перевести, но не понимаю значения
  • Почему директива выдаёт ошибку (React + TS)?

    @Ostic Автор вопроса
    У вас в tsconfig.js свойство allowSyntheticDefaultImports установленно true.

    вот и не угадали:
    {
      "compilerOptions": {
        "target": "esnext",
        "module": "esnext",
        "moduleResolution": "node",
        "sourceMap": false,
        "esModuleInterop": true,
        "jsx": "react",
        "locale": "ru",
        "lib": [
          "dom",
          "dom.iterable",
          "scripthost",
          "esnext"
        ],
      },
      "include": [
        "src/**/*"
      ],
      "exclude": [
        "node_modules",
        "**/*.spec.ts",
        "dist"
      ]
    }
  • Почему директива выдаёт ошибку (React + TS)?

    @Ostic Автор вопроса
    Robur, да, если я правильно понимаю о чем речь
    import React from 'react';
    а что, можно не подключать?
  • Как в проекте React добавить plugin в babel?

    @Ostic
    Дмитрий, у Вас всё прописано, а проблема не понятно в чём - мало информации. у Вас есть этот пример на github.com?
    У Вас React? Могу дать свой рабочий вариант.
  • Как передавать данные (payload) в redux-saga?

    @Ostic Автор вопроса
    Я вот так решил:
    1. посмотрел, что
    The result of yield take(pattern) is an action object being dispatched.
    , те
    const action = yield take('SEND_MSG_ASYNC')
    2. Посмотрел, что
    const takeEvery = (patternOrChannel, saga, ...args) => fork(function*() {
      while (true) {
        const action = yield take(patternOrChannel)
        yield fork(saga, ...args.concat(action))
      }
    })

    и сделал так
    function* sendAsync(action) {
      yield delay(2000)
      yield put( { type: 'SEND_MSG', text: action.text } )
    }
    
    function* watchSendAsync() {
      while (true) {
        const action = yield take('SEND_MSG_ASYNC')
        yield fork(sendAsync, action) 
      }
    }
    const forkWatchSendAsync = ()=>fork(watchSendAsync)
    
    export default function* rootSaga() {
      yield all([
        helloSaga(),
        forkWatchSendAsync()
      ])
    }

    пока как-то так )
  • Как передавать данные (payload) в redux-saga?

    @Ostic Автор вопроса
    это - то понятно...
    вопрос в том, что её надо сначала получить от watchIncrementAsync(), чтобы потом передать в синхронный, а у нас
    takeEvery('ACTION_ASYNC', actionAsync) // как здесь получить нагрузку, чтобы передать дальше?
  • Как в проекте React добавить plugin в babel?

    @Ostic
    Дмитрий,
    1. установить
    yarn add -D  @babel/plugin-proposal-export-default-from

    или
    npm i -D @babel/plugin-proposal-export-default-from

    2. прописать в babel
    "plugins": [  "@babel/plugin-proposal-export-default-from" ]

    плагин подключен.
  • Js safari перезагружает страницу, что делать?

    @Ostic
    kiranananda, для того, чтобы компоненты не дублировались должны работать соответствующие инструменты, типа chunk, tree shacking,
    Webpack Bundle Analyzer
    надо смотреть, думать, используя разные инструменты, тем более не понятно как там у вас всё настроено
  • Что за ошибка при установке IJavascript для Jupyter Notebook?

    @Ostic
    jupyter,
    5c927ddd8975f446170477.jpeg
    В консоль вставить и Enter нажать
    Либо использовать python3 и, соответственно, путь указать другой...
    я не уверен в том, какой нужен python
  • Что за ошибка при установке IJavascript для Jupyter Notebook?

    @Ostic
    set PYTHON=D:\Python\bin\Python.exe
    или
    npm install --global --production windows-build-tools

    npm install --global node-gyp

    setx PYTHON "%USERPROFILE%\.windows-build-tools\python27\python.exe"

    перезапустите cmd и проверьте, существует ли переменная через
    set PYTHON который должен возвращать переменную

    Наконец, повторно примените npm install <module>
  • СИ - Интерпретация сложных описаний, кто сможет помочь?

    @Ostic
    Я с указателями дружил раньше и сейчас вроде не забыл, хотя давно не упражнялся, но имхо "указатель на массив указателей, возвращающих указатель на функцию возвращающую массив указателей на функции (и главное!!) возвращающих int!"