Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос
RomReed

Роман Александрович

JavaScript, Flutter, ReactNative, Redux, Firebase
  • 348
    вклад
  • 14
    вопросов
  • 474
    ответа
  • 51%
    решений
Лайки
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Где взять продвинутые dev tools для react native?

    davidnum95 @davidnum95
    Flipper
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Почему возникает ошибка "Введен недействительный адрес. Исправьте адрес и повторите отправку."?

    NSA-bot
    NSA-bot @NSA-bot
    Просто нажмите 3 раза кнопку добавить и все будет нормально.
    Ответ написан более трёх лет назад
    17 комментариев
    17 комментариев
  • React native как открыть фото на весь экран по нажатию?

    kirbi1996
    Kirill Makarov @kirbi1996
    Сегодня уже в чате отвечал на этот вопрос, создай state, а в return вместо модалки View с flex:1, внутри естественно картинка. И в зависимости от state отслеживай и рендерь либо первый view с flatlist либо второй с квртинкой
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Как убрать ошибку Element implicitly has an 'any' type because expression of type 'string'?

    Kozack
    Alex @Kozack
    Thinking about a11y
    Потому что TS не знает что конкретно находится в переменной id. Он только знает что там какая-то строка. А поскольку id может быть любой строкой, то и значение ITEMS[0][id] тоже может быть чем угодно.

    Вы можете изменить ваш интерфейс, указав какие значения может принимать id
    interface IFilters {
        id: keyof IItems; // <-- "id" | "filter1" | "filter2"
        title: string;
      }
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Зачем нужны рефы в ReactJS?

    mindyourlifeguide
    Bohdan Petrov @mindyourlifeguide
    Думаю, вам загуглить будет быстрее, чем кому-то писать.
    Но если что, то вот.
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Как сделать авторизацию на куках с использованием React hooks?

    Robur
    Robur @Robur
    Знаю больше чем это необходимо
    так же как без хуков.
    авторизация отдельно, реднеринг UI отдельно, а с хуками вы его рендерите или нет, это частности.
    для реактовых компонент состояние авторизованности, текущий пользователь и что там еще у вас - это просто еще одни данные, как с остальным стейтом приложения работаете так и с авторизацией работайте.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как увеличивать фотографию по двойному нажатию?

    davidnum95 @davidnum95
    https://github.com/ascoders/react-native-image-viewer
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Какое ваше мнение о Expo для быстрой разработки React Native приложений?

    profesor08
    profesor08 @profesor08
    За удобство разработки на react со всеми плюхами в виде styled-components и тд, придется заплатить производительностью, и просядет она на порядки. Множество подводных камней, множество неудобств, hot reaload работает плохо, часто не восстанавливается, часто надо перезапускать, часто переподключаться. Может для каких-то примитивных приложений он и годится, но для чего-то сложнее hello-world - нет.
    Ответ написан более трёх лет назад
    5 комментариев
    5 комментариев
  • Стоит ли начинать изучение React Native сразу с Expo?

    raoffonom
    Димка Реактнативный @raoffonom
    React Native Developer
    Экспо днище еще то, подробности

    Курсы на русском языке
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Стоит ли начинать изучение React Native сразу с Expo?

    davidnum95 @davidnum95
    Никто не использует expo в разработке реальных приложений, чего и вам не советую.
    https://habr.com/ru/post/480258/
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как обновить только один элемент массива в Redux?

    miraage
    Mikhail Osher @miraage
    Старый прогер
    Вызов функции render не означает перерисовку DOM. React разберётся, что нужно изменить.
    Если хочется "супер производительности", тогда надо изменить структуру store на что-то такое:

    const initialState = {
      result: [], // list of ids
      data: {}, // map by id
    }
    
    export const placesReducer = (state, { type, payload }) => {
      switch (type) {
        case 'PLACES_LOAD_SUCCESS':
          return {
            ...state,
            // псевдокод, можно использовать https://github.com/paularmstrong/normalizr
            result: payload.map(id),
            data: payload.reduce(keyById),
          }
      }
    }
    
    // по этому результату делаете .map
    export const getPlaces = state => state.places.result
    // этот селектор будет дергать каждый Place, только ему нынче кидайте не place={place}, а id={id}, ибо .map по идентификаторам идёт
    export const getPlace = (state, id) => state.places.data[id];


    Не забывайте, что таким способом Вы создаёте N+1 подписок, а раньше была 1 подписка.
    React очень много раз вызывает функцию render (либо же саму функцию-компонент), поэтому в "лишних" ререндерах нет ничего страшного. Замечательный пост на эту тему: https://kentcdodds.com/blog/fix-the-slow-render-be...
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Как в react-native просматривать структуру компонентов приложения (аналог вкладки Elements в Chrome DevTools)?

    raoffonom
    Димка Реактнативный @raoffonom
    React Native Developer
    1. Нажимаем CMD+D в симуляторе, чем вызываем Debug Menu
    2. Выбираем Show Inspector
    3. Теперь нажимая на любой компонент, дерево раскрывается прямо на нем, со всеми стилями и свойствами.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как сделать подгрузку в фоновом режиме подгрузку данных в react-native + expo?

    raoffonom
    Димка Реактнативный @raoffonom
    React Native Developer
    Это реализуется на вэбсокетах.
    Подробней об этом здесь
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как изменить state в React?

    freislot
    Павел Антонов @freislot
    Frontend-разработчик
    так и менять
    this.setState({
      data: {
        text: {
          value: {
            title: 'нужный тайтл'
          }
        }
      }
    })


    setState сравнит состояния и смёржит их, в итоге тайтл изменится а остальные данные останутся как были.


    Извиняюсь не проснулся)) правильно будет так конечно-же

    this.setState(prevState => ({
          data: {
            ...prevState.data,
            text: {
              ...prevState.data.text,
              value: {
                ...prevState.data.text.value,
                title: '1234'
              }
            }
          }
    }))


    Зачеркнул первый вариант ответа, для примера как делать НЕ нужно)

    https://jsfiddle.net/2xe7vpa8/1/

    суть в общем такая, что мы spread'ом копируем состояние объекта и изменяем нужный ключ. Ответ hzzzzl намного короче, но суть та же.
    Ответ написан более трёх лет назад
    4 комментария
    4 комментария
  • Как связать значения инпутов в React?

    0xD34F
    0xD34F @0xD34F Куратор тега React
    getCitiesOptions = () => {
      const country = +this.state.country;
    
      return Object
        .entries(cities)
        .filter(n => n[1].country === country)
        .map(([ id, city ]) => <option key={id} value={id}>{city.name}</option>);
    }
    Ответ написан более трёх лет назад
    3 комментария
    3 комментария
  • Можно ли в react использовать компонент вместо Router?

    rockon404
    Антон Спирин @rockon404 Куратор тега React
    Frontend Developer
    1. Как вы в этой схеме собираетесь слушать обновления history и переходить на другие страницы?
    2. Чем вам не угодил готовый инструмент, отлично решающий эту задачу?
    Ответ написан более трёх лет назад
    17 комментариев
    17 комментариев
  • Какой мобильный кроссплатформенный фреймворк посоветуете?

    doublench21
    doublench21 @doublench21
    Хоть разработчики кроссплатформенного г*%на и будут гореть в аду(кроме разработчиков VSCode), но лучшим вариантом на данный момент является React Native. Для справки, нынешний Инстаграмм сделан на React Native. Ближайшим пресоедователем, набирающим обороты является Flutter .

    5VuVjGP.png

    P.S. Всё остальное забудьте как страшный сон!
    Ответ написан более трёх лет назад
    6 комментариев
    6 комментариев
  • Как решить проблему подключиния к серверу на Android API 20 и ниже?

    KuSu
    Михаил Чварков @KuSu
    Android разработчик
    В логе написано, что проблема с ssl сертификатом. Или править надо сертификат на сервере, или отключать проверку ssl на устройстве.
    Ответ написан более трёх лет назад
    4 комментария
    4 комментария
  • Что делает этот код?

    rockon404
    Антон Спирин @rockon404
    Frontend Developer
    Симуляция пользовательского ввода.
    Ответ написан более трёх лет назад
    2 комментария
    2 комментария
  • Как сделать preload страницы?

    pcdesign @pcdesign
    Я взял себе вот это решение:
    https://stackoverflow.com/a/50891389/4549490
    Вроде работает.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
Оценили как «Нравится»
  • 1
  • 2
  • Следующие →
Самые активные сегодня
  • vpetrov
    Виктор Петров
    • 6 ответов
    • 0 вопросов
  • dimonchik2013
    Dimonchik
    • 6 ответов
    • 0 вопросов
  • SunTechnik
    • 4 ответа
    • 0 вопросов
  • vabka
    Василий Банников
    • 4 ответа
    • 0 вопросов
  • Пес Барбос
    • 4 ответа
    • 0 вопросов
  • rPman
    • 3 ответа
    • 0 вопросов
  • © Habr
  • О сервисе
  • Правила
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации