React-native: ☂️ Бережливое ядро

Созданный на 6 февр. 2019  ·  196Комментарии  ·  Источник: facebook/react-native

В течение последних нескольких месяцев мы обсуждали и продвигались в реализации проекта под названием «Lean Core». Пожалуйста, прочтите нашу мотивацию для этого проекта . За прошедшие годы React Native накопил множество частей, которые сейчас устарели, не используются или являются устаревшими. Пришло время все очистить и в будущем перевести репозиторий в гораздо более управляемое состояние.

Это зонтик задача предназначена для отслеживания всех работ , необходимых для достижения цели более экономного ядра, включая работу вокруг реорганизации хранилища. Эта проблема постоянно обновляется, поэтому будут добавляться новые элементы, а завершенные будут (повторно) перемещены. Некоторые из предметов будут вызывать отдельные проблемы для отслеживания работы. Если вы не видите имени, присвоенного какому-либо из перечисленных ниже пунктов, и вы хотели бы помочь, пожалуйста, подайте заявку в комментариях и свяжитесь со мной, чтобы начать!

Компоненты и время выполнения

React Native в настоящее время поставляется с большим количеством компонентов, многие из которых устарели или устарели, но они все еще являются частью репозитория и увеличивают размер приложений. Что касается элементов в этом разделе, мы либо стремимся полностью удалить вещи, если они не используются, либо мы хотели бы переместить их либо в репозитории, управляемые сообществом, либо иным образом в facebookarchive . Список здесь частично основан на потрясающем исследовании @ ax-fb. Перенос можно примерно выполнить, следуя руководству @ matt-oakes ниже: https://github.com/facebook/react-native/issues/23313#issuecomment -461462981

  • [] Удалить ImageStore (@cpojer)
  • [] Удалить PushNotificationIOS (@cpojer)
  • [] Удалить AsyncStorage (@cpojer)
  • [] Удалить слайдер (@cpojer)
  • [] Удалить ProgressBarAndroid (@cpojer)
  • [] Удалить ProgressViewIOS (@cpojer)
  • [] Удалить MaskedViewIOS (@cpojer)
  • [] Удалить ActionSheetIOS (@cpojer)
  • [] Удалить ImagePickerIOS (@cpojer)
  • [] Удалить средство выбора и средство выбора iOS (@cpojer)
  • [] Удалить DatePickerAndroid, DatePickerIOS (@cpojer)
  • [] Удалить ReactART (@cpojer)

Сторонние зависимости

За эти годы мы накопили большое количество зависимостей, особенно JavaScript. Мы также убрали из React Native такие вещи, как Metro и react-native-cli . Это означает, что мы оставили большое количество зависимостей инструментов в нашем package.json, многие из которых не будут использоваться самим RN и не будут обновляться до последних версий, что приведет к раздутию полной установки React Native. Также было бы здорово провести аудит всех используемых зависимостей и определить, какие из них можно удалить.

  • Зависимости JavaScript

    • [] Проверьте, какие зависимости велики и можно ли их уменьшить.

    • [] Выясните, какие зависимости можно обновить до последних версий для исправлений безопасности.

    • [] Выясните, какие зависимости можно дедуплицировать (= уменьшить несоответствие версий) для меньшего размера установки

  • Перенести код React Native во внешние зависимости

    • [] Определите, какой код JavaScript мог бы лучше обслуживаться сторонним пакетом вместо сохранения копии или нашей собственной реализации.

Структура репозитория

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

  • [] Обеспечьте начальную настройку, которая работает с существующим репозиторием с несколькими пакетами, а также хорошо работает с внутренней настройкой Facebook (@cpojer)
  • [] ЗАДАЧА: Определите, что в этой области необходимо провести дополнительную работу.

Выполненная работа


Нажмите, чтобы просмотреть предыдущие работы до создания этой проблемы

Good first issue Help Wanted Ran Commands Discussion

Самый полезный комментарий

Я хотел вкратце рассказать о прогрессе, достигнутом всеми в работе с Lean Core. Я просто хочу сказать, как я потрясен вашим вкладом всего за неделю. Большое вам спасибо!

Вот вся работа, которая уже выполнена:

  • NetInfo (https://github.com/react-native-community/react-native-netinfo) был успешно разделен и выпущен на npm через @ response-native-community / netinfo @ matt-oakes, который даже добавил новые тесты и новые возможности модуля!
  • ViewPagerIOS (https://github.com/react-native-community/react-native-viewpager/pull/1) был успешно разделен @ferrannp.
  • AsyncStorage (https://github.com/react-native-community/react-native-async-storage) был извлечен @Krizzu.
  • StatusBar (https://github.com/react-native-community/react-native-statusbar/pull/1) был перенесен в отдельное репо пользователем @dmtrKovalenko.
  • Slider (https://github.com/react-native-community/react-native-slider/pull/1) был разделен @michalchudziak.
  • MaskedViewIOS (https://github.com/react-native-community/react-native-masked-view/pull/1) был превращен в репозиторий сообщества @FonDorn.
  • PushNotificationIOS (https://github.com/react-native-community/react-native-push-notification-ios/pull/1) был извлечен @rafaellincoln.
  • ImageEditor (https://github.com/react-native-community/react-native-image-editor/pull/1) был извлечен @Trancever.
  • @EvanBacon добавил сообщение об устаревании ImageStore в # 23330.
  • @wellmonge объединила AlertIOS и Alert в # 23318.
  • Инженеры Callstack выпустили первую версию нового интерфейса командной строки React Native: https://blog.callstack.io/the-react-native-cli-has-a-new-home-79b63838f0e6

Я также хочу подчеркнуть, как извлечение этих модулей может улучшить обслуживание этих модулей, т.е. @ matt-oakes добавил тесты для NetInfo (https://github.com/react-native-community/react-native-netinfo/pull/ 4) и @ifsnow добавил типы потока в AsyncStorage (https://github.com/react-native-community/react-native-async-storage/pull/4). Отделив эти компоненты от React Native (и Facebook), они могут работать намного быстрее по отдельности, не будучи заблокированными сотрудником Facebook. Кроме того, поскольку мы можем переносить существующие проблемы и запросы на вытягивание из репозитория React Native, это также упростит поддержку самого React Native, и мы сможем быстрее отвечать на запросы на вытягивание!

Вот над чем мы работаем или над чем работаем дальше:

  • Удалить VibrationIOS
  • Удалите неиспользуемые сторонние зависимости
  • Начните перенос внутреннего кода Facebook, чтобы использовать новые пакеты response-native-community.

Опять же, всем, кто помогал до сих пор, спасибо!

Все 196 Комментарий

@cpojer Я хочу удалить SnapshotViewIOS 🔪

Привет, @cpojer , спасибо, что собрал все вместе!

Я готов решить несколько проблем, начиная с перемещения AsyncStorage.

Я был бы рад помочь с переводом NetInfo в репозиторий сообщества.

Было бы лучше сначала создать личное репо на Github, а затем потенциально перенести его в организацию react-native-community, как только она будет готова, или мы должны сразу начать с репо в этой организации?

@cpojer , я хотел бы помочь в решении некоторых из этих проблем, могу ли я начать с «Объединить AlertIOS с предупреждением»?

Это потрясающе! Я записываю ваши имена рядом с пунктами выше.

@jdmunro, можешь отправить пиар и назначить меня? Затем я могу взять его на себя и удалить специфические для FB вещи перед приземлением.
@Krizzu и @ matt-oakes я создал https://github.com/react-native-community/react-native-async-storage и https://github.com/react-native-community/react-native-netinfo для отправки PR со всем кодом, необходимым, чтобы сделать их сторонними модулями. В идеале на первом этапе вы просто возьмете код из репозитория RN и поместите его в отдельные репозитории. Чтобы убедиться, что это работает, мы могли бы затем связать их обратно в RN в качестве зависимости и удалить исходную реализацию. Далее мы можем переместить его в дополнительный пакет.
@wellmonge Звучит здорово! Я не совсем уверен, что повлечет за собой работа, но, может быть, вы можете просто проверить два модуля и посмотреть, сможете ли вы их объединить?

@cpojer Я мог бы помочь с перемещением слайдера 🙂

После этого я могу взять что-нибудь еще, если вам все еще понадобится помощь

@michalchudziak Замечательно ! Я создал https://github.com/react-native-community/react-native-slider , пожалуйста, посмотрите мой комментарий выше о том, что делать дальше.

В качестве имени проекта в package.json используйте @react-native-community/<project name> , т.е. @react-native-community/slider .

@cpojer Я могу взять ViewPagerAndroid . Я думаю, лучше переместить его в репозиторий сообщества (если вы можете создать репо для меня, спасибо 😄), чем просто удалить его, потому что другие пакеты реализовали это поведение на JS для iOS и передают на собственный для Android.

Привет, @cpojer, я хотел бы помочь, объединив и переместив Picker и PickerIos. :)

@ferrannp создал для вас https://github.com/react-native-community/react-native-viewpager ! См. Сообщения выше.
@jainkuniya спасибо! Не совсем уверен, как это будет выглядеть, но, возможно, вы увидите, как их объединить и начать отправлять небольшие PR, чтобы реагировать на нативных.

Это потрясающе! Я записываю ваши имена рядом с пунктами выше.

@jdmunro, можешь отправить пиар и назначить меня? Затем я могу взять его на себя и удалить специфические для FB вещи перед приземлением.
@Krizzu и @ matt-oakes я создал https://github.com/react-native-community/react-native-async-storage и https://github.com/react-native-community/react-native-netinfo для отправки PR со всем кодом, необходимым, чтобы сделать их сторонними модулями. В идеале на первом этапе вы просто возьмете код из репозитория RN и поместите его в отдельные репозитории. Чтобы убедиться, что это работает, мы могли бы затем связать их обратно в RN в качестве зависимости и удалить исходную реализацию. Далее мы можем переместить его в дополнительный пакет.
@wellmonge Звучит здорово! Я не совсем уверен, что повлечет за собой работа, но, может быть, вы можете просто проверить два модуля и посмотреть, сможете ли вы их объединить?

Конечно! Я сделаю это и доложу вам.

Может помочь с StatusBarIOS и PushNotificationIOS

@cpojer Вы предпочитаете имя пакета Android?

Используя NetInfo в качестве примера, в настоящее время это com.facebook.react.modules.netinfo . Должны ли мы сделать его стандартным для всех извлеченных модулей с помощью чего-то вроде com.reactnativecommunity.modules.netinfo ?

Могу я помочь с

  • Переместить SegmentedControlIOS в репозиторий сообщества
  • Переместить ProgressViewIOS в репозиторий сообщества

Я сниму флажок, пожалуйста.


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

👉 Щелкните здесь, если хотите еще раз взглянуть на шаблон отчета об ошибке.

@dmtrКоваленко выставил вас за StatusBarIOS, созданный https://github.com/react-native-community/react-native-statusbar
Сообщество @ matt-oakes в названии пакета звучит хорошо, но если мы сохраним существующее, меня это тоже устроит.
@kdenz Создано https://github.com/react-native-community/react-native-segmented-control для SegmentedControlIOS
@vonovak Создано https://github.com/react-native-community/react-native-checkbox для репозитория флажков

Просто чтобы резюмировать грубые шаги, которые мы должны предпринять для извлечения:

  1. Извлеките текущую версию модуля, над которым вы работаете, и все его зависимости в отдельный репозиторий git и отправьте PR на тот, который был создан для вашего сообщества в RN. См. В response-native-webview пример того, как он должен работать, если он содержит собственный код.
  2. Добавьте предупреждение об устаревании в React Native, используя уже существующий модуль warnOnce , см. Пример в response-native-implementation.js .
  3. Затем мы закроем все проблемы / PR и предложим людям использовать вместо них только что созданные проекты и репозитории.
  4. После выпуска или двух мы полностью удалим код из React Native, после чего будет работать только внешний модуль.
  5. В качестве альтернативы мы можем попробовать подход, при котором мы немедленно удалим код из репозитория RN, но добавим новый репозиторий сообщества в качестве зависимости от React Native и сохраним существующие API-интерфейсы, работающие так, как они есть. Однако я не уверен, будет ли это работать для модулей с собственными зависимостями.

Пожалуйста, дай мне знать, если возникнут какие-либо вопросы :)

  • Переместить ImageStore в репозиторий сообщества

Я думаю, нам следует отказаться от этого в пользу любого существующего решения FileSystem . Основной вариант использования - получение Base64 из изображения. Также нет поддержки Android.

Привет, @cpojer! Я бы помог с

  • Удалите MaskedViewIOS и, возможно, перейдите в репозиторий сообщества.

Я бы хотел помочь!
Могу я поработать

  • Удалите ProgressBarAndroid из репозитория, возможно, переместите в репозиторий сообщества
    ?

Привет, @cpojer! Могу я помочь с

  • Переместите собственный код ActionSheetIOS в expo.

@cpojer Я хотел бы помочь, подпишитесь на библиотеки / CameraRoll (компоненты ImagePickerIOS и CameraRoll)

Приложение RNTester не имеет собственного package.json, поэтому любые компоненты, которые мы удаляем, должны быть либо удалены из приложения RNTester, либо оставаться в ядре в качестве зависимости. Каков подход RNTester к этому похудению?

@cpojer Я могу помочь с перемещением буфера обмена в

Могу я помочь с этой задачей? @cpojer

  • Переместите Picker в репозиторий сообщества.

@jainkuniya Может, поработаем вместе?

@zhaozhiming Я уверен, что я планировал сначала объединить его в самом

Интересно. Что будет с RNTester? Я надеюсь, что мы сможем сохранить его со всеми компонентами.

@cpojer Я могу помочь с

  • Перенести "Поделиться" в репозиторий сообщества

Кроме того, было бы очень полезно иметь какой-то скоординированный шаблон, поэтому есть собственный код в виде библиотеки, простой способ его разработать и внести свой вклад.

@pvinis Может быть, взгляните на этот коммит из репозитория NetInfo, над которым я работаю:

https://github.com/matt-oakes/react-native-netinfo/tree/83e96b30fda1c18f62d27ec0db61db7f56eddc1f

Там пока нет кода NetInfo, но в нем есть части библиотеки для Android и iOS и пример проекта, который подключается без необходимости вложенного package.json .

Теперь я планирую переместить код NetInfo, а затем переместить примеры RNTester в проект example .

@EvanBacon звучит хорошо. Вы хотите подписаться, чтобы добавить в RN предупреждение об отказе от ImageStore и порекомендовать стороннее решение?

@ matt-oakes уже проделал отличную работу с NetInfo, это модель для зеркала для всех извлечений: https://github.com/react-native-community/react-native-netinfo/pull/1

@pvinis as @ matt-oakes говорит, что каждый проект должен иметь свои собственные примеры и тестовый код. Я думаю, что когда мы все закончим, мы сможем рассмотреть возможность создания единого примера RNTester, который извлекает все наиболее часто используемые извлеченные модули и объединяет их в одно приложение.

VirtualizedList остается, верно? Я видел это раньше в списке, но теперь вижу, что это не так.

Привет, @cpojer, я могу позаботиться о переносе ImageEditor в отдельный репозиторий.

Привет, @cpojer, я бы с удовольствием поработал над этим

  • Определите все зависимости в package.json, которые не используются напрямую в React Native.

@ matt-oakes, как вы планируете протестировать или помочь в разработке этой библиотеки? нам нужен проект, который включает в себя библиотеку, которую можно легко обновить / удалить и воссоздать или что-то в этом роде.

Таким образом, другим было бы легко внести свой вклад. Это могло бы быть «примерное» приложение, но, на мой взгляд, «примерное» приложение предназначено для демонстрации того, как использовать библиотеку, где приложение «разработчика» может быть разработано, протестировано и т.

Есть идеи для этого?

@brunolemos, да, извините, что я ошибся за то, что сначала

@Trancever Я создал https://github.com/react-native-community/react-native-image-editor, чтобы вы отправили пиар!
@ nimish-gupta, это круто! Можете ли вы провести анализ и создать отдельную задачу, в которой обсуждаются неиспользуемые зависимости; или иным образом отправьте запрос на перенос с четкими объяснениями, почему они могут быть удалены (т. е. их нельзя найти и т. д.)
@pvinis мы сейчас обсуждаем, имеет ли смысл создавать эшафот. Пока у нас это не будет, основывайте свою работу на структуре https://github.com/react-native-community/react-native-webview или https://github.com/react-native-community/react-native. -netinfo имеет для меня наибольший смысл.

привет @cpojer для проекта PickerIOS и Picker, я планирую выполнить следующие шаги:

  • Добавьте warning в PickerIOS , это значит, что он устарел и будет удален в следующем выпуске.
  • После выпуска удалите PickerIOS из RN .

А пока мы можем переместить Picker в репо сообщества.

Предложения?

@jainkuniya Я думаю, что это хорошая идея, но имейте в виду, что Picker использует PickerIOS под капотом. Я думаю, было бы лучше, если бы мы могли избавиться от PickerAndroid и PickerIOS и вместо этого открывать только Picker, как вы думаете? Многие другие компоненты уже работают таким образом.

Чтобы дать людям представление о процессе, через который я прошел, чтобы переместить код NetInfo:

1) Используется create-react-native-library для создания каркаса: npx react-native-create-library --platforms ios,android --package-identifier com.reactnativecommunity.netinfo --prefix RNC --license MIT netinfo
2) Создал пример проекта, запустив react-native init NetInfoExample в корне нового проекта библиотеки. Затем я переименовал созданную папку в example .
3) Удалил example/package.json и переместил зависимости и скрипты в корень package.json . Я также переместил некоторые другие сгенерированные файлы, такие как babel.config.js в корень проекта.
4) Обновлены ссылки на библиотеки React Native в примерах файлов Gradle Android и в проекте Xcode. Достаточно было выполнить поиск и замену для ../node_modules/react-native и заменить его на ../../node_modules/react-native .
5) Обновлен путь к имени основного модуля в MainApplication.java и AppDelegate.m с index на example/index .
6) Добавлены модули babel-plugin-module-resolver и настроены таким образом в babel.config.js . Это позволяет вам импортировать код библиотеки так же, как это сделал бы пользователь.
7) Вручную связал проект библиотеки с примером. Это очень похоже на то, как вы обычно это делаете, но путь на Android в settings.gradle будет просто ../../android ( вот так ).
8) Затем я переместил файлы собственного кода, переименовав их с префиксом RNC (React Native Community) вместо старого RCT . Я поместил код Javascript в js и изменил путь индекса в package.json .
9) Затем я переместил примеры из RNTester в проект example и немного привел в порядок код. Не стесняйтесь использовать файл example/index.js как способ содержать примеры, которые вы копируете из RNTester. Это просто легкая обертка, такая как изначально была в RNTester.
10) Я немного привел проект в порядок, чтобы он соответствовал настройке react-native-webview . Основные изменения коснулись файлов Gradle Android.

Надеюсь, это поможет людям :)

@pvinis Я думаю, что между демонстрацией людям, как использовать библиотеку, и помощью в разработке есть много example в проекте в значительной степени выполняет обе цели одновременно.

Что касается автоматизированного тестирования, я еще не изучал его полностью, однако ранее я использовал Jet (на основе Detox и используемый react-native-firebase ) для сквозного тестирования с помощью response-native- расположение .

Потрясающие. Я проделал тот же процесс несколько дней назад, когда пытался извлечь некоторые функции приложения в библиотеку. Я не выполнял удаление package.json и пару других мелких шагов. Я постараюсь проверить все, что вы сделали и я, и посмотрю, есть ли еще что-то непонятное.

Спасибо за подробности. :)

@cpojer SnapshotViewIOS похоже, также используется для внутренних целей для некоторых интеграционных тестов iOS. Это доступно только в том случае, если вы ссылаетесь на собственный модуль RCTTest . Использование здесь: https://github.com/facebook/react-native/blob/master/RNTester/js/RNTesterApp.ios.js#L180

Мы просто удаляем SnapshotViewIOS из общедоступного экспорта RN, т. Е. Он все еще должен быть доступен частным образом для тестового использования?

Было некоторое обсуждение того, как сохранить историю импортируемых файлов. Я нашел это руководство, которое было действительно полезным и позволило мне сделать это для модуля NetInfo:

https://stosb.com/blog/repting-history-when-moving-files-across-repositories-in-git/

Подводя итог, вам сначала нужно выяснить, какие файлы вам нужно скопировать. Затем вы создаете такой сценарий:

#!/bin/bash

mkdir -p combined/

# Pipe output to silence "file not found" warnings.
mv ReactAndroid/src/main/java/com/facebook/react/modules/netinfo/NetInfoModule.java combined/ 2>/dev/null
mv Libraries/Network/RCTNetInfo.h combined/ 2>/dev/null
mv Libraries/Network/RCTNetInfo.m combined/ 2>/dev/null
mv Libraries/Network/NetInfo.js combined/ 2>/dev/null

true

Вы должны поместить этот файл где-нибудь вне репозитория.

Затем вам нужно запустить эти команды:

git fetch origin --unshallow
git checkout -b history
git filter-branch -f --prune-empty --tree-filter ~/treefilter.sh @
git filter-branch --prune-empty -f --subdirectory-filter combined

Первая команда filter-branch займет некоторое время и будет использовать сценарий для перемещения всех интересующих вас файлов в одну папку. Вторая команда должна быть довольно быстрой и переместит файлы из новой папки в корень, а затем сохранит только те коммиты, которые изменяют любой из файлов, которые вы хотите сохранить.

Затем вы можете получить такую ​​историю: https://github.com/react-native-community/react-native-netinfo/commit/master

привет @cpojer я бы с удовольствием поработал

  • Переместить ProgressViewIOS в репозиторий сообщества

Спасибо

Обратите внимание на полифилл выборки:

Удалите полифилл выборки из репо и повторно используйте whatwg-fetch напрямую, если это возможно.

Нам пришлось его форкнуть, потому что наш модуль Blob не является стандартным и не освобождает свои ресурсы автоматически. Должно быть проще реализовать автоматическую очистку ресурсов с новой системой собственных модулей, но до тех пор мы должны сохранить разветвленный полифилл.

@cpojer Перемещение «Поделиться» в репозиторий

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

Обратите внимание на полифилл выборки:

Удалите полифилл выборки из репо и повторно используйте whatwg-fetch напрямую, если это возможно.

Нам пришлось его форкнуть, потому что наш модуль Blob не является стандартным и не освобождает свои ресурсы автоматически. Должно быть проще реализовать автоматическую очистку ресурсов с новой системой собственных модулей, но до тех пор мы должны сохранить разветвленный полифилл.

Поскольку мне нужна поддержка AbortController.Signal, я искал возможность обновить разветвленный полифилл. Подходит ли это к будущему полифилла выборки внутри ядра?

@cpojer Я бы хотел поработать над PushNotificationIOS.

@cpojer я мог бы помочь с

  • Переместить ImageEditor в репозиторий сообщества

Спасибо!

@ nicholaslee119 https://github.com/react-native-community/react-native-progress-view создан для вас. Проверьте комментарии выше о том, как добиться прогресса.
@Ansalibrahim Хорошее замечание. Создан https://github.com/react-native-community/react-native-simple-share для вас. Пожалуйста, отправьте туда PR!
@rafaellincoln Создан https://github.com/react-native-community/react-native-push-notification-ios, чтобы вы могли поработать.
@dratwas @Trancever уже использует его, пожалуйста, поработайте с ним над созданным для него репо.
@ Jyrno42 Можно ли перейти на сторонний полифил, поддерживающий все, что нам нужно?

@cpojer Извините, я не заметил, что на нем есть
Я могу взять Move ImageStore to a community repo если это еще не сделано, или Move ImagePickerIOS to a community repo

Может ли кто-нибудь сказать мне, почему будут удалены AsycnStorage и PushNotificationIOS? Я думаю, что они оба используются множеством приложений, так что, может быть, мы могли бы переместить их в сообщество, а не просто удалять?

Особенно много людей используют PushNoticationIos. Я использую https://github.com/zo0r/react-native-push-notification, который использует PushNotificationIos. Есть ли лучшая альтернатива, о которой я не знаю?

@vdlindenmark AsyncStorage не удаляется, а перемещается в Сообщество

Хочу взять пикер !!!

Если Move ImagePickerIOS to a community repo еще не занято, с радостью выручу 😄

Привет, @cpojer, я отправил # 23359 для слияния PickerIOS и Picker . Пожалуйста, просмотрите :).

Эту проблему следует закрепить 📌

@dratwas извини, я там запутался. На самом деле мы полностью отказываемся от поддержки ImageStore потому что уже доступны сторонние параметры, как указано @EvanBacon. Вы хотите стать волонтером для другого модуля?
@vdlindenmark, как указывает @Krizzu , оба этих модуля
@Keraito Я создал https://github.com/react-native-community/react-native-image-picker-ios, чтобы вы могли отправить PR.
@andersonaddo готово! Спасибо за предложение.

@cpojer Интересно, AccessibilityInfo в репозиторий сообщества.

Я не знаю, может ли он существовать отдельно от ядра, но я вижу выгоду в увеличении поддержки доступности в React-Native.

Уже есть некоторые предложения по увеличению поддержки доступности на уровне представления и сделать его более кроссплатформенным (https://github.com/react-native-community/discussions-and-proposals/pull/56, https: // github.com/react-native-community/discussions-and-proposals/pull/55, https://github.com/react-native-community/discussions-and-proposals/pull/54), но то, что RN не делает Не предоставляю прямо сейчас, и нет никаких проблем или предложений по этому поводу, это доступ для некоторых пользовательских предпочтений на уровне операционной системы. Например: нет возможности получить опцию «уменьшить движение», которая необходима для адаптации приложения путем уменьшения / отключения анимации .

Я думаю, что эти параметры, предоставляемые UIAccessibility на iOS (я не знаю эквивалента на Android), могут быть доступны с AccessibilityInfo .

И наличие репо сообщества могло бы привлечь больше вкладов для решения этой конкретной проблемы.

Спасибо.

@cpojer Я не вижу ни одного неназначенного модуля, поэтому я поговорю с @Trancever, если смогу помочь:

  • Переместить ImageEditor в репозиторий сообщества

@elucaswork Доступность невероятно важна, и я считаю, что она должна быть частью самого React Native. Мы должны сделать все возможное, чтобы улучшить поддержку специальных возможностей в React Native из коробки.
@dratwas звучит хорошо!

  • Переместите Picker в репозиторий сообщества.

@cpojer, могу я начать эту проблему?

кое-что, что RN не предоставляет прямо сейчас, и по этому поводу нет никаких проблем или предложений, - это доступ к некоторым пользовательским предпочтениям на уровне операционной системы. Например: нет возможности получить опцию «уменьшить движение», которая необходима для адаптации приложения путем уменьшения / отключения анимации .

Я думаю, что эти параметры, предоставляемые UIAccessibility на iOS (я не знаю эквивалента на Android), могут быть доступны с AccessibilityInfo .

Мне как раз сегодня было интересно, как читать опцию «уменьшить движение» в React Native, но похоже, что она не реализована.

Как лучше всего сделать запрос на добавление функции и проследить за ней? Https://react-native.canny.io/feature-requests по- прежнему является предпочтительным форумом для запросов функций?

Что нам делать с VibrationIOS ? С марта 2016 года он помечен как устаревший и заменен на Vibration . Похоже, легкий кандидат на удаление.

@hramos отличное предложение! Я позабочусь об удалении этого.

@cpojer Я заметил, что Picker / PickerIOS никому не назначен. Я бы тоже хотел поработать над этим, если это вообще возможно.

Привет, @rafaellincoln , что касается сборщика, я думаю, мы планируем сначала объединить его в самом

Я хотел вкратце рассказать о прогрессе, достигнутом всеми в работе с Lean Core. Я просто хочу сказать, как я потрясен вашим вкладом всего за неделю. Большое вам спасибо!

Вот вся работа, которая уже выполнена:

  • NetInfo (https://github.com/react-native-community/react-native-netinfo) был успешно разделен и выпущен на npm через @ response-native-community / netinfo @ matt-oakes, который даже добавил новые тесты и новые возможности модуля!
  • ViewPagerIOS (https://github.com/react-native-community/react-native-viewpager/pull/1) был успешно разделен @ferrannp.
  • AsyncStorage (https://github.com/react-native-community/react-native-async-storage) был извлечен @Krizzu.
  • StatusBar (https://github.com/react-native-community/react-native-statusbar/pull/1) был перенесен в отдельное репо пользователем @dmtrKovalenko.
  • Slider (https://github.com/react-native-community/react-native-slider/pull/1) был разделен @michalchudziak.
  • MaskedViewIOS (https://github.com/react-native-community/react-native-masked-view/pull/1) был превращен в репозиторий сообщества @FonDorn.
  • PushNotificationIOS (https://github.com/react-native-community/react-native-push-notification-ios/pull/1) был извлечен @rafaellincoln.
  • ImageEditor (https://github.com/react-native-community/react-native-image-editor/pull/1) был извлечен @Trancever.
  • @EvanBacon добавил сообщение об устаревании ImageStore в # 23330.
  • @wellmonge объединила AlertIOS и Alert в # 23318.
  • Инженеры Callstack выпустили первую версию нового интерфейса командной строки React Native: https://blog.callstack.io/the-react-native-cli-has-a-new-home-79b63838f0e6

Я также хочу подчеркнуть, как извлечение этих модулей может улучшить обслуживание этих модулей, т.е. @ matt-oakes добавил тесты для NetInfo (https://github.com/react-native-community/react-native-netinfo/pull/ 4) и @ifsnow добавил типы потока в AsyncStorage (https://github.com/react-native-community/react-native-async-storage/pull/4). Отделив эти компоненты от React Native (и Facebook), они могут работать намного быстрее по отдельности, не будучи заблокированными сотрудником Facebook. Кроме того, поскольку мы можем переносить существующие проблемы и запросы на вытягивание из репозитория React Native, это также упростит поддержку самого React Native, и мы сможем быстрее отвечать на запросы на вытягивание!

Вот над чем мы работаем или над чем работаем дальше:

  • Удалить VibrationIOS
  • Удалите неиспользуемые сторонние зависимости
  • Начните перенос внутреннего кода Facebook, чтобы использовать новые пакеты response-native-community.

Опять же, всем, кто помогал до сих пор, спасибо!

@cpojer

  • Удалите неиспользуемые зависимости
  • Определите все зависимости в package.json, которые не используются напрямую в React Native.

Вышеуказанные задачи выполняются с использованием PR # 23428 и # 23467.

@cpojer

  • Удалить SwipeableList

адрес в # 23484, вы можете удалить ListView, если хотите.

FWIW, CameraRoll зависит от ListView. Может быть, сначала убрать его было бы полезно при удалении ListView.

FWIW, CameraRoll зависит от ListView. Может быть, сначала убрать его было бы полезно при удалении ListView.

Файл CameraRollView в RNTester кажется единственным, что использует ListView в ReactNative. Возможно, PR заменить это на FlatList было бы неплохо, чтобы сломать эту зависимость. Я с радостью согласен, что если это произойдет до того, как CameraRoll будет полностью отключен

По сравнению с другими версиями, размер увеличен, что является ключевым моментом. Есть ли способ уменьшить размер в react native 0.58.4? Всего для одной страницы потребовалось 18 МБ.
Ниже приведены мои зависимости
"react": "16.6.3", "react-native": "0.58.4", "react-native-elements": "^1.0.0", "react-native-gesture-handler": "^1.0.15", "react-native-vector-icons": "^6.3.0", "react-navigation": "^3.2.3"

Увидел, что навигатор iOS убрали с рН 0.59. я поинтересовался, есть ли уже для этого пакет сообщества? @cpojer

@cpojer Я могу поработать над этим, если кто еще не начал над этим работать

  • Удалите полифилл выборки из репо и повторно используйте whatwg-fetch напрямую, если это возможно.

@ nimish-gupta, попробуй! Могут быть некоторые подводные камни, но мы можем обсудить это в PR и посмотреть, как все пройдет. Это может оказаться невозможным, но давайте попробуем и посмотрим, как далеко мы сможем зайти.

@cpojer Интересно, достаточно ли KeyboardAvoidingView , чтобы держать его в ядре.
Вы, ребята, думали об удалении его, чтобы освободить место для более надежных решений, таких как https://github.com/APSL/react-native-keyboard-aware-scroll-view , или очень полезно оставить его в ядре? ?

@elucaswork, мы на самом деле используем его в FB на удивление

Здесь отличная работа. Однако я пытался использовать NetInfo и AsyncStorage, и мне кажется, что им не хватает файлов podspec . @cpojer Я думаю, что многие из нас используют Pods, разве мы не должны сделать их своего рода стандартом с пакетами, поддерживающими реакцию, которые имеют собственные коды ios?

Здесь отличная работа. Однако я пытался использовать NetInfo и AsyncStorage, и мне кажется, что им не хватает файлов podspec . @cpojer Я думаю, что многие из нас используют Pods, разве мы не должны сделать их своего рода стандартом с пакетами, поддерживающими реакцию, которые имеют собственные коды ios?

Похоже, у них есть подспецификации в подфайле React Native, которые, вероятно, нужно добавить в новые репозитории: https://github.com/facebook/react-native/blob/master/React.podspec#L301 -L304

@syaau @TheSavior Хорошее место. Я открыл PR, чтобы добавить Podspec в новое репозиторий NetInfo:

https://github.com/react-native-community/react-native-netinfo/pull/17

@cpojer по моему опыту KeyboardAvoidingView действительно ненадежный, может быть, это хорошая возможность улучшить его, если он останется на ядре ??

Я хотел бы предложить отказаться от ART в пользу react-native-svg .

@justDanielMata да, я определенно думаю, что его следует улучшить, если он останется в ядре, но это должно быть рассмотрено в другом обсуждении.
@EvanBacon Я

Удалить WebView из репозитория RN

Я счастлив принять это

@ericlew - к сожалению, это можно сделать только со стороны FB, потому что мы все еще зависим от него внутри.

NavigatorIos был удален из react-native , @cpojer, не могли бы вы создать репо для него под react-native-community ? Я хочу вернуть его обратно, если это нормально

у меня здесь рабочая версия
https://github.com/michaelknoch/react-native-navigator-ios

@sijad (к сведению: я не исправил ни одного неработающего импорта типа потока)

@sijad Мы хотели бы помещать в react-native-community только те компоненты, которые мы по-прежнему рекомендуем использовать. Компоненты, которые мы выводим из React Native в рамках упомянутого выше Lean Core, являются прекрасными компонентами для использования в ваших приложениях. NavigatorIOS - это не то, что мы хотим, чтобы люди продолжали использовать, поскольку мы рекомендуем другие решения для навигации. Однако похоже, что @michaelknoch взял на себя его поддержку, поэтому я рекомендую использовать эту версию, пока вы не сможете перейти к чему-то другому.

но почему вы не советуете использовать навигаторы? Как вы думаете, производительность навигации на основе JS (например, реакции-навигации) достаточно высока, чтобы встроенная навигация больше не была обязательной?
@cpojer

@cpojer Привет, только что создал PR для ProgressViewIOS https://github.com/react-native-community/react-native-progress-view/pull/1

@michaelknoch наоборот, мы определенно рекомендуем вам использовать нативное решение для навигации. Так получилось, что NavigatorIOS была устаревшей навигационной системой, которую мы больше не используем в Facebook. Прямо сейчас мы используем нашу собственную собственную систему навигации в Facebook, которая, к сожалению, не является открытым исходным кодом. Мы рекомендуем использовать https://github.com/wix/react-native-navigation.
@kdenz круто , я проверю!

@cpojer Только что завершил миграцию и подведение итогов SegmentedControlIos и добавил пример приложения.

  • Протестировал компонент, и все работает хорошо в новом проекте RN.
  • Выпущено в npm .

@cpojer завершил перенос Clipboard-Api с ядра RN на версию сообщества и добавил пример приложения для проверки всего.

  • Протестировал компонент, и все работает хорошо в новом проекте RN.
  • Выпущено в npm .

@cpojer я недавно начал реагировать

  • Переместите собственный "TestModule" в RNTester

если это еще не решено!

@cpojer как насчет компонента Toast? Я думаю, что сейчас он должен быть устаревшим и удален позже.
Причины:

  1. Toast - это просто еще один тип / стиль уведомления, есть много типов компонентов уведомлений.
  2. Существует только реализация под Android
  3. Сообщество https://github.com/search?q=react+native+toast поддерживает множество "тостовых" компонентов, которые являются мультиплатформенными.

Что вы думаете об этом?

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

Если по общему мнению, он не должен входить в состав сообщества react-native-community, поскольку, как и NavigatorIOS, он уже устарел, я бы сделал это под своей учетной записью, но предпочел бы его под эгидой -community.

Была ли причина для устаревания, кроме того, что она не используется внутри Facebook и только для iOS (что является достойной причиной)?

У меня есть рабочая версия: https://github.com/michaelknoch/react-native-tabbar-ios

@karlsander

Привет, я перемещаю собственный код ActionSheetIOS в expo. Пожалуйста, отметьте 🙇
https://github.com/expo/react-native-action-sheet/pull/105

Я пытался найти, где используется react-clone-referenced-element , но безуспешно. Я что-то пропустил? Я новичок в том, чтобы вносить свой вклад и реагировать на собственный код, так что извините, если это глупый вопрос.

@Rendfold, вы что-то не упускаете, мне было интересно то же самое.

Вот соответствующий коммит, в который он был добавлен: https://github.com/facebook/react-native/commit/665954efcc4460839d00a572be84cf204a42c0d5

Похоже, что теперь, когда ListView был удален, он должен удовлетворить зависимость. Я считаю, что это тоже используется только внутри Facebook.

@ericlewis там обновили, но не добавили, поэтому я пошел дальше. Пришлось перейти на коммиты 2016 года, чтобы найти, где это было eaba2abc0b76f9a26703c87eecf4a8bb52f9ed3e
Но да, вы были правы, это для ListView.

@cpojer Я DrawerLayout / DrawerLayoutAndroid для # 23730, и это кажется довольно изолированным.

Будет ли это хорошим кандидатом для извлечения? Я счастлив взять это на себя.

Я заметил, что из модулей, упомянутых здесь, только react-native-async-storage и react-native-netinfo прошли тесты e2e для обеих платформ, они также есть в

Недавно я изучил e2e-тестирование react-native-svg с помощью Detox и настроил его на travis и bitrise:
https://travis-ci.org/msand/react-native-svg-e2e/builds
https://app.bitrise.io/app/1a150b039e9b8fbd#/builds

Я делаю скриншоты как на ios, так и на android, и тестирую новую настройку проекта в простой нативной реакции для обоих, а также с cocoapods для ios.

У меня нет доступа к настройке bitrise для репозитория response-native-svg, @cpojer можно ли получить на это права? Или мне лучше перенести тесты e2e на circleci? Кажется, у эмулятора Android есть доступ к kvm / ускорению в любом случае.

Чтобы заставить его работать без kvm на travis и bitrise, потребовался последний эмулятор canary и множество попыток найти рабочую конфигурацию, поскольку они не поддерживают ускорение. В любом случае, если какой-то другой модуль заинтересован в настройке e2e где-то еще, кроме circleci, тогда это репо может быть полезно: https://github.com/msand/react-native-svg-e2e

Не по теме: если кто-то заинтересован в помощи с тестированием response-native-svg, то было бы здорово получить скрипт / приложение для запуска тестов отсюда: https://github.com/web-platform-tests/ WPT / дерево / мастер / SVG
Вероятно, можно использовать https://github.com/kristerkari/react-native-svg-transformer для загрузки файлов svg как есть, и тогда шаг сравнения со снимками экрана будет действительно полезен.

Что касается устаревания / разделения ART, я поддерживаю его отделение от репозитория, поддерживающего реакцию, и позволяя ему жить как есть и получать исправления ошибок / улучшения производительности. По крайней мере, если у вас есть, например, только простые данные пути, которые вы хотите отобразить, и вам не нужны какие-либо другие части спецификации svg, то вполне вероятно, что ART будет более производительным при использовании, по крайней мере, в react-native. Поскольку он не должен поддерживать столько функций, сколько что-то нацеленное на полное соответствие спецификации svg.

Если вы выполняете рендеринг на холст с помощью ART в сети, это также может быть быстрее, чем svg, в зависимости от варианта использования; профиль, чтобы найти ваши фактические горячие точки / узкие места, прежде чем прилагать усилия к такой оптимизации, и провести правильные измерения A / B со статистикой по достаточному количеству данных, если вы это делаете. И, если у вас есть существующий код, использующий ART, его, вероятно, можно оставить как есть. Но для нового кода я, вероятно, рекомендовал бы использовать svg, совместимый со спецификацией, и писать его (реагировать-native-) веб-совместимым способом (если ему не нужна производительность на уровне холста / webgl). Для этой цели в предстоящий выпуск response-native-svg также будет включена реализация index.web.js совместимости.

Мне как раз сегодня было интересно, как читать опцию «уменьшить движение» в React Native, но похоже, что она не реализована.
Как лучше всего сделать запрос на добавление функции и проследить за ней? Https://react-native.canny.io/feature-requests по- прежнему является предпочтительным форумом для запросов функций?

@kristerkari Я отправил PR, добавив поддержку "уменьшения движения" в AccessibilityInfo
https://github.com/facebook/react-native/pull/23839

@cpojer Привет, мне очень жаль, что я отсутствовал какое-то время. Я успешно переместил строку состояния response-native-status. Но не осуждал его в основном. Должен ли я сделать это сейчас?
А также я планирую создать дополнительный выпуск для пакета react-native-status-bar.

@dmtrKovalenko да, пожалуйста!

Сделан пиар для статус-бара устаревания -> # 23898

У меня нет доступа к настройке bitrise для репозитория response-native-svg, @cpojer можно ли получить на это права? Или мне лучше перенести тесты e2e на circleci? Кажется, у эмулятора Android есть доступ к kvm / ускорению в любом случае.

@msand Я думаю, что все остановились на CircleCI, потому что он работает быстрее, как проверено @gengjiawen , но я не уверен, что это «официально».

В react-native-cameraroll они тоже есть, но тесты на android не работают.

У меня проблемы с прохождением теста Android, тест очень простой (запускается ли приложение), так что это что-то в config. Я скопировал конфигурацию из netinfo, но она не работает из коробки. @ matt-oakes Вы сразу видите, есть ли что-то конкретное, что я пропустил?

@bartolkaruza Это то, что я исправил в репозитории NetInfo здесь: https://github.com/react-native-community/react-native-netinfo/pull/25

Я сейчас отправлю PR, чтобы исправить Camera Roll.

@cpojer есть ли планы по извлечению tvOS из ядра?

Думаю, нам также следует удалить Button .

Удалить или извлечь? Я бы предпочел извлечь, чем удалить.

Вопрос для собственных библиотек, которые в настоящее время используют функции, извлеченные в модули сообщества:

Каков рекомендуемый подход к использованию извлеченных модулей? Прямые зависимости или peerDependencies?

Например, reactotron-react-native в настоящее время напрямую использует AsyncStorage. При использовании response-native-asyncstorage в качестве прямой зависимости это может привести к использованию нескольких версий в приложении-потребителе. Планируется ли это или это должно быть peerDependency?

Я думаю, что это должна быть зависимость, и AsyncStorage определяет ReactNative как peerDependency, таким образом, он может использовать несколько версий AsyncStorage в одном приложении (за исключением того, что вы хотите использовать один и тот же, и вы четко указываете это в библиотеке readme), но процесс установки покажет предупреждение, если зависимость ReactNative не может встретиться.

Это просто? Разве не было бы потенциально нескольких версий названного собственного модуля AsyncStorage? Я думаю, это может привести к проблемам или нет?

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

Привет, @cpojer. Я хотел бы помочь с некоторыми из этих проблем. Могу я начать с «Переместить объединенный компонент PickerIOS / Picker в репозиторий сообщества»?

Привет, @wagnermaciel , я и @bartolkaruza работаем над этим. И почти готово. @cpojer, не могли бы вы создать

https://github.com/jainkuniya/react-native-picker

@jainkuniya Не беспокойся. @cpojer Есть ли здесь какие-либо проблемы, которые вы могли бы мне поручить? Я работаю с группой друзей, и мы все заинтересованы в том, чтобы участвовать любым способом 👍

@wagnermaciel спасибо за то, что присоединились к нашим усилиям! Я просто обновил исходный пост и удалил людей, которые не отвечали на задачи, на которые они подписались. Любой из вышеперечисленных без имени рядом с ним может быть выбран вами, если хотите. Над чем ты хочешь поработать?

Привет, @cpojer , могу ли я переместить ImagePickerIOS в репозиторий сообщества - я буду рад его поддерживать. Спасибо заранее!

@ aerlinn13 Я тебя за это

@cpojer Спасибо за быстрый ответ! Не могли бы вы назначить мне «Удалить ProgressBarAndroid из репозитория, возможно, перейти в репозиторий сообщества»? Я бы с удовольствием поработал над этим. Спасибо!!!

@wagnermaciel готово! С нетерпением жду вашего вклада :)

Привет @cpojer , хочу упомянуть компонент ToastAndroid. Ты знаешь, что с этим делать?
Похоже, что ToastAndroid используется в HMRLoadingView и LinkingExample. Поэтому сомнительно, как заменить тип уведомления для этих двух компонентов.
В любом случае, если он используется внутри FB, тогда это не проблема в настоящее время и игнорируйте мой комментарий :)

Мой исходный пост:

@cpojer как насчет компонента Toast? Я думаю, что сейчас он должен быть устаревшим и удален позже.
Причины:

  1. Toast - это просто еще один тип / стиль уведомления, есть много типов компонентов уведомлений.
  2. Существует только реализация под Android
  3. Сообщество https://github.com/search?q=react+native+toast поддерживает множество "тостовых" компонентов, которые являются мультиплатформенными.

Что вы думаете об этом?

@radeno Я не думаю, что мы собираемся удалять его прямо сейчас, но мы можем сделать это позже.

Извините, @cpojer был очень занят в прошлом месяце, но я возобновлю работу над ProgressViewIOS сегодня

@cpojer Я только что заметил отметку "Deprecate StatusBarIOS", но StatusBarIOS.ios и StatusBarIOS.android не менялись с 2018 года. Я что-то упустил?

Если ничего не пропало, извините. В противном случае дайте мне знать, потому что я могу помочь с этим.

@cpojer Не могли бы вы пояснить, где найти или как создать файлы для папки ios? Заранее спасибо!

@wagnermaciel См. https://github.com/facebook/react-native/issues/23313#issuecomment -461462981, чтобы узнать о процессе. Есть собственный код iOS, поскольку он там не реализован: https://github.com/facebook/react-native/blob/master/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.ios.js#L12

@cpojer готов взять на себя перемещение любого еще не назначенного компонента или заняться аудитом зависимостей JS.

@cpojer Я хотел бы внести свой вклад в

Каковы главные приоритеты? Вам нужна дополнительная помощь с проблемами наверху (например, переместить ProgressViewIOS в репозиторий сообщества) или с теми, которые находятся в разделе будущей работы? Есть некоторые, которым никто не назначен (например, тот, который перемещает ProgressViewIOS), но при чтении потока они кажутся уже занятыми.

Сегодня главными приоритетами

Есть ли у нас инструкции по созданию новой библиотеки RNC где-нибудь в вики или что-то в этом роде? Их будет полезно сохранить и найти для других, не только для RNC, но и как своего рода шаблон / руководство для всех библиотек.

Я только что нашел это на самом деле, но это еще не сделано. :)

Я думаю, что следующие кандидаты:

  • KeyboardAvoidingView, SafeAreaView
  • Модальный (?).

Рад был бы взять SafeAreaView !

Эти миграции из ядра все еще доступны? Если да, то какие следующие кандидатуры актуальны? Я тоже хочу попробовать протянуть руку :)

Я думаю, что @brentvatne @ide @ericvicenti @kmagiera предоставили информацию о том, что еще можно

Одна из вещей, с которой мы могли бы воспользоваться справкой, - это избавиться от использования ToolbarAndroid в RNTester на Android. Может ли кто-нибудь работать над заменой его использования на что-то другое?

Только что завершили обновление записи верхнего уровня. ImagePickerIOS - один из невостребованных компонентов, из которого компонент еще не был извлечен. Есть ли кто-нибудь, кто хотел бы взять на себя ответственность и отправить PR в репозиторий, созданный по адресу https://github.com/react-native-community/react-native-image-picker-ios ?

Наконец, похоже, что работа по внедрению DatePickerIOS и DatePickerAndroid так и не была реализована, см. Https://github.com/react-native-community/discussions-and-proposals/pull/85 - Это хорошая возможность! В идеале кто-то берет на себя ответственность за извлечение обоих компонентов DatePicker в это репо: https://github.com/react-native-community/react-native-datepicker

С двумя высокоуровневыми экспортами DatePickerIOS и DatePickerAndroid.

После того, как первоначальная версия будет отправлена, и компоненты будут исключены из RN, сообщество сможет объединить их в один компонент.

cc @mmcknett и @Swaagie

Добавлен ReactART как еще одна часть RN, которую мы хотели бы выделить в отдельное репо: https://github.com/react-native-community/react-native-art

Требуется помощь!

можно взять DatePickerIOS и DatePickerAndroid ?

@sijad , вы раньше работали с React Native и есть ли у вас план по извлечению?

@cpojer Могу ли я принять ReactART, начиная со следующего понедельника? В настоящее время я проповедую и продвигаю внедрение RN на работе, поэтому мне пришлось иметь дело как с ReactART, так и с упаковкой нативного кода в виде многоразовых пакетов RN.

@ivanmoskalev - великолепно звучит! Дайте мне знать, когда вы начнете, и сделайте пиар для нового репо, которое я создал :)

@cpojer вы случайно полностью пропустили ветку review ? Там была вся работа без документов и некоторых тестов на детоксикацию.

изменить: cc @sijad для осведомленности

изменить 2: https://github.com/Swaagie/react-native-datetimepicker все работают так, как они существовали в ветке review . У меня нет прав на воссоздание этого репо-банкомата, но я бы хотел его завершить.

Также @sijad , если вы хотите внести свой вклад в виде тщательного обзора и исправлений кода (при необходимости), это будет очень приветствоваться!

@cpojer @sijad работа определенно материализовалась, как упомянул @Swaagie . Я также обратился в Discord.

Не бойтесь пропустить ветку - ее легко не заметить. Оглядываясь назад, я должен был посоветовать Мартейну открыть PR в Draft -состоянии, в то время как он продолжал делать меньшие PR для работы, которую мы развернули и вложили в наши спринты.

Есть ли место, где я мог бы предложить документацию по стандартным рабочим процедурам для этих небольших модулей в Lean Core на react-native-community ? Мы многому научились, повторяя react-native-datetimepicker - мы хотели бы поделиться с более широким сообществом, чтобы сделать другую модуляризацию проще / быстрее.

Ой, должно быть, я воссоздал репо с другим именем, а потом воссоздал его.

Не могли бы вы отправить пиар новому дидпикеру?

Сделаю! Спасибо за быстрый отклик! Также никаких обид , мы все люди и, как сказал

@cpojer, не могли бы вы обновить верхний пост и добавить мой дескриптор github в:
Merge DatePickerIOS and DatePickerAndroid, move to community repo
Благодарность!

@Swaagie Готово!

Было бы замечательно, если бы вы использовали https://github.com/yfuks/react-native-action-sheet и объединили его с ActionSheetIOS.

Если вы собираетесь поддерживать репозиторий, созданный для перемещения API-интерфейсов из ядра React Native, убедитесь, что вы способны поддерживать реализации для других платформ, и обязательно посмотрите на эквивалентные реализации в react-native-web и отреагируйте. -родные окна.

@cpojer , ты действительно делаешь все это, или я могу взять один?
FWIW Я добился прогресса с RCTImagePickerIOS и отправлю PR в течение следующих нескольких дней.

@ Johan-dutoit да, к сожалению, удаление модулей может выполнить только сотрудник Facebook. С нетерпением жду вашего извлечения ImagePickerIOS!

@cpojer 🎉PR Отправлено и протестировано 🎉

@cpojer Я хотел бы, чтобы вы отреагировали readme.md, который объясняет, что вы собираетесь делать в каждом из файлов. Это значительно облегчило бы жизнь тем, кто хочет внести свой вклад в проект. Как рыболовный крючок

Например

image

  • React.js
    Основная цель этого файла - ...
  • react-native-implementation.js
    Основное назначение этого файла ...
  • react-native-interface.js
    Основное назначение этого файла ...

Эти три файла могут быть немного простыми для понимания, но когда у нас есть такие файлы, это может быть немного сложно.
image

Очевидно, что они не должны быть слишком описательными, не говоря уже о том, чтобы описывать, что делает каждый файл. Только наиболее актуальное или базовое определение того, что предполагается делать в определенной папке.

Кроме того, было бы очень полезно показать в общих чертах, как работает этот репозиторий. Хотелось бы узнать ваше мнение. Спасибо за все.

@cpojer Что-нибудь осталось, что я могу забрать? Хотел бы участвовать.

Как упоминалось в @FLGMwt в https://github.com/facebook/react-native/issues/23313#issuecomment -469288200, было бы здорово также вывести DrawerLayoutAndroid

Было бы здорово переместить ToastAndroid и Animated тоже

@ecreeth , эти файлы используют createReactClass, потому что они полагаются на миксины, которые еще не были удалены. Файлы, использующие createReactClass, по-прежнему используют propTypes, но будут удалены для Flow после их обновления.

@TheSavior Большое спасибо за информацию!

С удовольствием внесу свой вклад, я вижу, что кнопка «Переместить в репозиторий сообщества» не была занята. Что должно быть сделано? Хотел бы помочь!

Конечно. Просто проверьте другие, например https://github.com/react-native-community/react-native-netinfo. У вас должен быть собственный код для ios и android, а также любые js. К сожалению, у нас нет конкретного способа создать новую библиотеку.

Привет, как использовать веб-просмотр после удаления веб-просмотра в RN

Привет, хотел бы помочь! Я вижу, что все задачи по удалению назначены

Привет, я могу помочь с перемещением компонентов DatePickerComponents, пожалуйста, дайте мне знать, чем я могу помочь @cpojer , Спасибо!

Привет, @cpojer , я могу помочь с перемещением компонента CheckBox, буду благодарен, если вы поможете мне в этом процессе. Спасибо!

Я счастлив попытаться переместить Button в новое хранилище сообщества. Был бы признателен за руководство о том, как действовать, но я начну с просмотра источника и начну ориентироваться. @cpojer, пожалуйста,

Открыл PR для удаления Remove DatePickerAndroid, DatePickerIOS, TimePickerAndroid

https://github.com/facebook/react-native/pull/26729

Как мы решаем, когда добавлять новые экспортные данные в ядро? Например, хук useWindowDimensions может быть встроен в пользовательское пространство, но он был добавлен в ядро ​​- https://github.com/facebook/react-native/blob/3b3c95b0170e60983eb6e89b910d100d08eee141/Libraries/Utilities/useWindowDimensions .js

Я думаю, что мы думаем о хуках, что модернизация ядра, ориентированного на реагирование, для предоставления хуков по умолчанию имеет смысл. Было бы не замечательно, если бы react native предоставлял только устаревшие API и имел хуки, оборачивающие их в отдельный пакет сообщества.

Так что я думаю, что хуки - это особый вопрос, отличный от обычного добавления новых экспортов в ядро.

Привет всем! В настоящее время члены сообщества не могут предпринимать никаких действий. Запланированное на данный момент удаление приостановлено по двум причинам:

  • Мы ждем некоторое время, пока мы удалим компоненты, чтобы дать сообществу время перейти на извлеченные версии.
  • Удаление может быть выполнено только кем-то из Facebook, потому что мы фактически просто перемещаем эти файлы во внутренние Facebook, пока не примем внешние модули в будущем.

Что касается API-интерфейсов на основе хуков, этот вопрос не подходит для обсуждения. В целом, я считаю, что мы должны постепенно добавлять API на основе ловушек по мере переосмысления нашего общедоступного API в будущем.

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

Запланированное на данный момент удаление приостановлено по двум причинам ...

Было ли это ошибкой, что ToolbarAndroid все равно был удален (без уведомления)?

@cpojer Могу ли я сделать «Переместить кнопку в

@Archulan, вы можете отправить свой PR на кнопку response -native-button

@Archulan см. Этот комментарий # 23313 (комментарий)

@Archulan, вы можете отправить свой PR на кнопку response -native-button

Хорошо. Не могли бы вы посоветовать мне это сделать?

Думаю, нет смысла убирать Button . Компонент очень маленький, и он полезен для получения некоторых базовых функций без необходимости установки каких-либо библиотек.

@brentvatne

Думаю, нет смысла убирать Button .

так странно, как react содержат <Button/>

после революции должно быть просто

react-native = jsi(fabric & turbomodule) + codegen

другие могут управляться сообществом.

для получения некоторых базовых функций.

возможно, следует использовать монорепозиторий в react-native с react-native-element как react с react-dom

@cpojer Is Vibration (https://reactnative.dev/docs/vibration) также переносится в проект сообщества? Если это так, и поскольку он кажется достаточно маленьким для начала, я мог бы помочь с этим.

@cpojer Могу ли я удалить ImageStore ?

Можно ли с этим помочь? Я новичок и думаю, что смогу многому научиться с этим.
С Уважением.
Мануэль Портеро.

Если с этим все еще требуется помощь, я буду рад помочь 😃

я тоже

Я хотел бы внести свой вклад. Что я могу сделать?

Что я могу сделать?

Я хотел бы внести свой вклад, могу ли я что-нибудь сделать?

Была ли эта страница полезной?
0 / 5 - 0 рейтинги