React-native: ☂️ Lean Core

Erstellt am 6. Feb. 2019  ·  196Kommentare  ·  Quelle: facebook/react-native

In den letzten Monaten haben wir ein Projekt namens „Lean Core“ diskutiert und Fortschritte erzielt. Bitte lesen Sie unsere Motivation für dieses Projekt . Im Laufe der Jahre hat React Native viele Teile angesammelt, die mittlerweile veraltet, unbenutzt oder anderweitig veraltet sind. Es ist Zeit, alles aufzuräumen und das Repository in Zukunft in einen viel besser verwaltbaren Zustand zu versetzen.

Dies ist eine Dachaufgabe , mit der alle Arbeiten verfolgt werden sollen, die zum Erreichen des Ziels eines schlankeren Kerns erforderlich sind, einschließlich der Arbeit an der Reorganisation des Repositorys. Dieses Problem wird auf dem neuesten Stand gehalten, sodass neue Elemente hinzugefügt und abgeschlossene Elemente (neu) verschoben werden. Einige der Elemente führen zu separaten Problemen, um die Arbeit zu verfolgen. Wenn Sie keinen der Namen sehen, die einem der folgenden Punkte zugewiesen sind, und Sie helfen möchten, melden Sie sich bitte freiwillig in den Kommentaren und wenden Sie sich an mich, um loszulegen!

Komponenten & Laufzeit

React Native enthält derzeit eine große Anzahl von Komponenten, von denen viele veraltet oder veraltet sind, aber dennoch Teil des Repositorys sind und die Größe der Anwendungen erhöhen. Für Elemente in diesem Abschnitt möchten wir entweder Dinge vollständig entfernen, wenn sie nicht verwendet werden, oder wir möchten sie entweder in von der Community verwaltete Repositorys oder auf andere Weise in das Facebook- Archiv verschieben . Die Liste hier basiert teilweise auf einer großartigen Untersuchung von @ ax-fb. Die Migration kann grob durchgeführt werden, indem Sie dem Leitfaden von @ matt-oakes weiter unten folgen: https://github.com/facebook/react-native/issues/23313#issuecomment -461462981

  • [] ImageStore entfernen (@cpojer)
  • [] PushNotificationIOS (@cpojer) entfernen
  • [] AsyncStorage entfernen (@cpojer)
  • [] Schieberegler entfernen (@cpojer)
  • [] ProgressBarAndroid entfernen (@cpojer)
  • [] ProgressViewIOS entfernen (@cpojer)
  • [] MaskedViewIOS entfernen (@cpojer)
  • [] ActionSheetIOS entfernen (@cpojer)
  • [] ImagePickerIOS entfernen (@cpojer)
  • [] Picker und PickerIOS entfernen (@cpojer)
  • [] DatePickerAndroid, DatePickerIOS (@cpojer) entfernen
  • [] ReactART entfernen (@cpojer)

Abhängigkeiten von Drittanbietern

Im Laufe der Jahre haben wir eine große Anzahl von Abhängigkeiten angehäuft, insbesondere JavaScript. Wir haben auch Dinge aus React Native entfernt, wie Metro und den React-Native -Cli . Dies bedeutet, dass wir eine große Anzahl von Werkzeugabhängigkeiten in unserer package.json belassen haben, von denen viele von RN selbst nicht verwendet werden und nicht auf die neuesten Versionen aktualisiert werden, wodurch die vollständige Installation von React Native aufgebläht wird. Es wäre auch großartig, alle verwendeten Abhängigkeiten zu prüfen und festzustellen, welche entfernt werden könnten.

  • JavaScript-Abhängigkeiten

    • [] Überprüfen Sie, welche Abhängigkeiten groß sind und ob sie kleiner gemacht werden können

    • [] Finden Sie heraus, welche Abhängigkeiten für Sicherheitskorrekturen auf die neuesten Versionen aktualisiert werden können

    • [] Finden Sie heraus, welche Abhängigkeiten für kleinere Installationsgrößen dedupliziert werden können (= Versionsinkongruenzen reduzieren)

  • Verschieben Sie React Native-Code in externe Abhängigkeiten

    • [] Identifizieren Sie, welcher JavaScript-Code besser von einem Paket eines Drittanbieters bereitgestellt werden kann, anstatt eine Kopie oder unsere eigene Implementierung zu verwalten

Repository-Struktur

Derzeit ist das React Native-Repository ein großes Repository mit wenig Organisation, das die Trennung von Bedenken fördert. Im Rahmen dieser Bemühungen ist es unser Ziel, die Dinge auch in eine überschaubare Struktur zu bringen. Als Teil davon möchten wir einem Monorepo-Modell folgen, das aus mehreren kleineren Paketen besteht. Dies wird eine schrittweise Migration sein, und wir werden nur die ersten Arbeiten verfolgen, um dies in Gang zu bringen.

  • [] Stellen Sie ein erstes Setup bereit, das mit dem vorhandenen Repository mit mehreren Paketen funktioniert und auch gut mit dem internen Setup von Facebook (@cpojer) zusammenarbeitet.
  • [] TODO: Identifizieren Sie weitere Arbeiten, die in diesem Bereich erforderlich sind

Abgeschlossene Arbeit


Klicken Sie hier, um frühere Arbeiten anzuzeigen, bevor dieses Problem erstellt wurde

Good first issue Help Wanted Ran Commands Discussion

Hilfreichster Kommentar

Ich wollte ein kurzes Update über die Fortschritte geben, die alle bei den Lean Core-Bemühungen gemacht haben. Ich möchte nur sagen, wie überwältigt ich von all Ihren Beiträgen in etwas mehr als einer Woche bin. Vielen Dank!

Hier sind alle Arbeiten, die bereits abgeschlossen sind:

  • NetInfo (https://github.com/react-native-community/react-native-netinfo) wurde erfolgreich aufgeteilt und auf npm über @ react-native-community / netinfo von @ matt-oakes veröffentlicht, der sogar neue Tests hinzufügte und neue Funktionen für das Modul!
  • ViewPagerIOS (https://github.com/react-native-community/react-native-viewpager/pull/1) wurde von @ferrannp erfolgreich aufgeteilt.
  • AsyncStorage (https://github.com/react-native-community/react-native-async-storage) wurde von @Krizzu herausgezogen.
  • StatusBar (https://github.com/react-native-community/react-native-statusbar/pull/1) wurde von @dmtrKovalenko in ein separates Repo verschoben.
  • Der Slider (https://github.com/react-native-community/react-native-slider/pull/1) wurde von @michalchudziak aufgeteilt.
  • MaskedViewIOS (https://github.com/react-native-community/react-native-masked-view/pull/1) wurde von @FonDorn in ein Community-Repo umgewandelt.
  • PushNotificationIOS (https://github.com/react-native-community/react-native-push-notification-ios/pull/1) wurde von @rafaellincoln extrahiert.
  • ImageEditor (https://github.com/react-native-community/react-native-image-editor/pull/1) wurde von @Trancever extrahiert.
  • @EvanBacon hat in # 23330 eine Verfallsmeldung für ImageStore hinzugefügt.
  • @wellmonge hat AlertIOS und Alert in # 23318 zusammengeführt.
  • Die Callstack-Ingenieure haben die erste Version der neuen React Native CLI veröffentlicht: https://blog.callstack.io/the-react-native-cli-has-a-new-home-79b63838f0e6

Ich möchte auch hervorheben, wie das Extrahieren dieser Module zu einer besseren Wartung dieser Module führen kann, dh @ matt-oakes fügte Tests für NetInfo hinzu (https://github.com/react-native-community/react-native-netinfo/pull/). 4) und @ifsnow haben AsyncStorage Flow-Typen hinzugefügt (https://github.com/react-native-community/react-native-async-storage/pull/4). Durch die Entkopplung dieser Komponenten von React Native (und Facebook) können sie sich einzeln viel schneller bewegen, ohne von einem Facebook-Mitarbeiter blockiert zu werden. Da wir vorhandene Probleme und Pull-Anforderungen aus dem React Native-Repository migrieren können, wird es auch einfacher, React Native selbst zu verwalten, und wir können schneller auf Pull-Anforderungen reagieren!

Daran arbeiten wir oder arbeiten wir als nächstes:

  • Entfernen Sie VibrationIOS
  • Entfernen Sie nicht verwendete Abhängigkeiten von Drittanbietern
  • Starten Sie die Migration des internen Facebook-Codes, um die neuen React-Native-Community-Pakete zu verwenden

Nochmals vielen Dank an alle, die bisher geholfen haben!

Alle 196 Kommentare

@cpojer Ich möchte SnapshotViewIOS 🔪 entfernen

Hey @cpojer , danke, dass hast !

Ich bin bereit, einige Probleme anzugehen, beginnend mit dem Umzug von AsyncStorage.

Ich würde gerne helfen, NetInfo in ein Community-Repo zu verschieben.

Wäre es am besten, zuerst ein persönliches Github-Repo zu erstellen und dieses dann möglicherweise in die Reag-Native-Community- Organisation zu migrieren, sobald es fertig ist, oder sollten wir sofort mit einem Repo in dieser Organisation beginnen?

@cpojer , ich möchte bei einigen dieser Probleme helfen. Kann ich mit "Merge AlertIOS with Alert" beginnen?

Das ist großartig! Ich schreibe deine Namen neben die obigen Punkte.

@jdmunro kannst du eine PR senden und mich ihr zuweisen? Dann kann ich es übernehmen und FB-spezifisches Zeug entfernen, bevor ich lande.
@Krizzu und @ matt-oakes Ich habe https://github.com/react-native-community/react-native-async-storage und https://github.com/react-native-community/react-native-netinfo erstellt Sie können PRs mit dem gesamten Code senden, der erforderlich ist, um sie zu Modulen von Drittanbietern zu machen. Idealerweise nehmen Sie im ersten Schritt einfach den Code aus dem RN-Repo und legen ihn in separate Repos. Um sicherzustellen, dass es funktioniert, können wir sie dann als Abhängigkeit wieder mit RN verknüpfen und die ursprüngliche Implementierung entfernen. Weiter unten können wir es tatsächlich in ein optionales Paket verschieben.
@wellmonge Hört sich toll an! Ich bin mir nicht ganz sicher, was die Arbeit bedeuten wird, aber vielleicht können Sie einfach die beiden Module überprüfen und sehen, ob Sie sie vereinheitlichen können?

@cpojer Ich könnte beim Bewegen des Schiebereglers helfen 🙂

Danach kann ich etwas anderes abholen, wenn Sie noch Hilfe benötigen

@michalchudziak Super ! Ich habe https://github.com/react-native-community/react-native-slider erstellt. Bitte

Verwenden Sie als Namen für das Projekt in package.json @react-native-community/<project name> , dh. @react-native-community/slider .

@cpojer Ich kann ViewPagerAndroid . Ich denke, es ist besser, es in ein Community-Repo zu verschieben (wenn Sie das Repo für mich erstellen können, danke 😄), als es nur zu entfernen, da andere Pakete dieses Verhalten auf JS für iOS implementiert haben und auf dem nativen für Android weiterleiten.

Hey @cpojer Ich möchte helfen, indem ich Picker und PickerIos zusammenführe und verschiebe. :) :)

@ferrannp hat https://github.com/react-native-community/react-native-viewpager für Sie erstellt! Siehe die obigen Nachrichten.
@ Jainkuniya danke! Sie sind sich nicht ganz sicher, wie das aussehen wird, aber vielleicht können Sie sehen, wie Sie sie vereinheitlichen und kleine PRs senden, um nativ zu reagieren.

Das ist großartig! Ich schreibe deine Namen neben die obigen Punkte.

@jdmunro kannst du eine PR senden und mich ihr zuweisen? Dann kann ich es übernehmen und FB-spezifisches Zeug entfernen, bevor ich lande.
@Krizzu und @ matt-oakes Ich habe https://github.com/react-native-community/react-native-async-storage und https://github.com/react-native-community/react-native-netinfo erstellt Sie können PRs mit dem gesamten Code senden, der erforderlich ist, um sie zu Modulen von Drittanbietern zu machen. Idealerweise nehmen Sie im ersten Schritt einfach den Code aus dem RN-Repo und legen ihn in separate Repos. Um sicherzustellen, dass es funktioniert, können wir sie dann als Abhängigkeit wieder mit RN verknüpfen und die ursprüngliche Implementierung entfernen. Weiter unten können wir es tatsächlich in ein optionales Paket verschieben.
@wellmonge Hört sich toll an! Ich bin mir nicht ganz sicher, was die Arbeit bedeuten wird, aber vielleicht können Sie einfach die beiden Module überprüfen und sehen, ob Sie sie vereinheitlichen können?

Sicher! Ich werde das tun und dir Bericht erstatten.

Kann bei StatusBarIOS und PushNotificationIOS helfen

@cpojer Haben Sie eine Präferenz für den Namen des Android-Pakets?

Am Beispiel von NetInfo ist es derzeit com.facebook.react.modules.netinfo . Sollten wir es für alle extrahierten Module mit so etwas wie com.reactnativecommunity.modules.netinfo Standard machen?

Kann ich helfen mit

  • Verschieben Sie SegmentedControlIOS in ein Community-Repo
  • Verschieben Sie ProgressViewIOS in ein Community-Repo

Ich nehme bitte das Kontrollkästchen.


Vielen Dank, dass Sie Ihr Problem eingereicht haben. Können Sie sich Ihre Beschreibung noch einmal ansehen und sicherstellen, dass die Problemvorlage vollständig ausgefüllt wurde?

👉 Klicken Sie hier, wenn Sie sich die Fehlerbericht-Problemvorlage

@dmtrKovalenko hat Sie für StatusBarIOS angemeldet, erstellt unter https://github.com/react-native-community/react-native-statusbar
Die @ matt-oakes-Community im Paketnamen klingt gut, aber wenn wir die vorhandene beibehalten, bin ich auch damit einverstanden.
@kdenz Erstellt https://github.com/react-native-community/react-native-segmented-control für das SegmentedControlIOS
@vonovak Erstellt https://github.com/react-native-community/react-native-checkbox für das Checkbox-Repo

Um nur die groben Schritte zusammenzufassen, die wir für die Extraktionen unternehmen sollten:

  1. Extrahieren Sie die aktuelle Version des Moduls, an dem Sie arbeiten, und alle Abhängigkeiten in ein separates Git-Repository und senden Sie eine PR an diejenige, die für Ihre in RN-Community erstellt wurde. In der React-Native-Webview finden Sie ein Beispiel dafür, wie es funktionieren soll, wenn es nativen Code enthält.
  2. Fügen Sie React Native mithilfe des bereits vorhandenen Moduls warnOnce eine Verfallswarnung hinzu. Ein Beispiel finden Sie unter react-native-Implementation.js .
  3. Wir werden dann alle Probleme / PRs schließen und die Leute anweisen, stattdessen die neu erstellten Projekte und Repositorys zu verwenden.
  4. Nach ein oder zwei Releases entfernen wir den Code vollständig aus React Native. Ab diesem Zeitpunkt funktioniert nur noch das externe Modul.
  5. Alternativ können wir einen Ansatz ausprobieren, bei dem der Code sofort aus dem RN-Repository entfernt wird, das neue Community-Repository jedoch als Abhängigkeit von React Native hinzugefügt wird und die vorhandenen APIs so funktionieren, wie sie sind. Ich bin mir jedoch nicht sicher, ob dies für Module mit nativen Abhängigkeiten funktioniert.

Bitte lassen Sie mich wissen, wenn Sie Fragen haben :)

  • Verschieben Sie ImageStore in ein Community-Repo

Ich denke, wir sollten dies zugunsten einer bestehenden FileSystem -Lösung ablehnen. Der Hauptanwendungsfall besteht darin, Base64 von einem Image abzurufen. Es hat auch keine Android-Unterstützung.

Hey @cpojer! Ich würde mit helfen

  • Entfernen Sie MaskedViewIOS und wechseln Sie möglicherweise zum Community-Repo

Ich würde gerne helfen!
Könnte ich daran arbeiten?

  • Entfernen Sie ProgressBarAndroid aus dem Repository und wechseln Sie möglicherweise zum Community-Repo
    ?

Hey @cpojer! Könnte ich helfen mit

  • Verschieben Sie den nativen ActionSheetIOS-Code in die Ausstellung.

@cpojer Ich würde gerne helfen, mich für Libraries / CameraRoll (ImagePickerIOS- und CameraRoll-Komponenten) anmelden.

Die RNTester-App verfügt nicht über eine eigene package.json, sodass alle Komponenten, die wir entfernen, entweder aus der RNTester-App entfernt werden müssen oder als Abhängigkeit im Kern verbleiben müssen. Was ist der Ansatz für RNTester in Bezug auf diese Abschwächung?

@cpojer Ich kann helfen, die Zwischenablage in ein Community-Repo zu verschieben :)

Könnte ich bei dieser Aufgabe helfen? @cpojer

  • Verschieben Sie Picker in ein Community-Repo.

@jainkuniya Vielleicht können wir zusammenarbeiten?

@zhaozhiming ya sicher, was ich vorhatte, ist, es zuerst in RN Repo selbst zusammenzuführen und dann zu Community Repo zu wechseln.

Interessant. Was wird mit dem RNTester passieren? Ich hoffe, wir können es mit allen Komponenten behalten.

@cpojer Ich kann helfen

  • Verschieben Sie "Teilen" in das Community-Repo

Außerdem wäre es sehr hilfreich, eine koordinierte Vorlage zu haben, daher gibt es den nativen Code als Bibliothek, eine einfache Möglichkeit, ihn zu entwickeln und Beiträge zu leisten.

@pvinis Vielleicht sehen Sie sich dieses Commit aus dem NetInfo-Repo an, an dem ich arbeite:

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

Es gibt dort noch keinen NetInfo-Code, aber er enthält die Android- und iOS-Teile der Bibliothek sowie ein Beispielprojekt, das ohne verschachteltes package.json verlinkt wird.

Ich plane jetzt, den NetInfo-Code zu verschieben und dann die RNTester-Beispiele in das example -Projekt zu verschieben.

@EvanBacon klingt gut. Möchten Sie sich anmelden, um RN eine Warnung hinzuzufügen, um ImageStore zu verwerfen und eine Lösung von Drittanbietern zu empfehlen?

@ matt-oakes hat mit NetInfo bereits großartige Arbeit geleistet. Dies ist ein Modell, das für alle Extraktionen gespiegelt werden kann: https://github.com/react-native-community/react-native-netinfo/pull/1

@pvinis as @ matt-oakes sagt, dass jedes Projekt seine eigenen Beispiele und Testcodes haben sollte. Ich denke, wenn wir alle fertig sind, können wir ein einziges RNTester-Beispiel erstellen, das alle am häufigsten verwendeten extrahierten Module zusammenfasst und in einer einzigen App zusammenfasst.

VirtualizedList bleibt, oder? Ich habe es schon einmal in der Liste gesehen, aber ich sehe, dass es nicht mehr ist.

Hey @cpojer, ich kann mich darum kümmern, ImageEditor in ein separates Repo zu verschieben.

Hey @cpojer, ich würde gerne daran arbeiten

  • Identifizieren Sie alle Abhängigkeiten in package.json, die in React Native nicht direkt verwendet werden

@ matt-oakes Wie wollen Sie diese Bibliothek testen oder bei der Entwicklung helfen? Wir brauchen ein Projekt, das die Bibliothek enthält, das leicht aktualisiert / entsorgt und neu erstellt werden kann oder so.

Auf diese Weise wäre es für andere einfach, einen Beitrag zu leisten. Es könnte eine "Beispiel" -App sein, aber meiner Meinung nach dient eine "Beispiel" -App dazu, zu zeigen, wie eine Bibliothek verwendet wird, wobei in einer "Entwickler" -App die Bibliothek entwickelt, getestet usw. werden kann.

Irgendwelche Ideen dafür?

@brunolemos ja, das tut mir leid, mein Fehler, dass ich es zuerst dort

@Trancever Ich habe https://github.com/react-native-community/react-native-image-editor erstellt, damit Sie eine PR gegen senden können!
@ Nimish-Gupta, das ist großartig! Können Sie die Analyse durchführen und ein separates Problem erstellen, in dem die nicht verwendeten Abhängigkeiten erläutert werden? oder senden Sie auf andere Weise eine Pull-Anfrage mit klaren Erklärungen, warum sie entfernt werden können (dh sie können nicht gefunden werden usw.)
@pvinis Wir diskutieren derzeit, ob es sinnvoll ist, ein Gerüst zu erstellen. Bis wir das haben, stützen Sie Ihre Arbeit auf die Struktur in https://github.com/react-native-community/react-native-webview oder https://github.com/react-native-community/react-native -netinfo macht für mich am meisten Sinn.

hi @cpojer für das PickerIOS- und Picker-Projekt plane ich folgende Schritte:

  • Fügen Sie dem PickerIOS ein warning , das veraltet ist und in der weiteren Version entfernt wird.
  • Entfernen Sie nach der Veröffentlichung PickerIOS von RN .

In der Zwischenzeit können wir Picker in das Community-Repo verschieben.

Vorschläge?

@jainkuniya Ich denke, die Idee ist gut, aber denken Sie daran, dass Picker PickerIOS unter der Haube verwendet. Ich denke, es wäre am besten, wenn wir PickerAndroid und PickerIOS loswerden und stattdessen nur Picker aussetzen könnten. Was denkst du? Viele andere Komponenten funktionieren bereits auf diese Weise.

Um den Leuten eine Vorstellung von dem Prozess zu geben, den ich durchlaufen habe, um den NetInfo-Code zu verschieben:

1) Verwenden Sie die Bibliothek create-react-native-library , um das Gerüst zu generieren: npx react-native-create-library --platforms ios,android --package-identifier com.reactnativecommunity.netinfo --prefix RNC --license MIT netinfo
2) Erstellt ein Beispielprojekt, indem react-native init NetInfoExample im Stammverzeichnis des neuen Bibliotheksprojekts ausgeführt wird. Ich habe dann den erstellten Ordner in nur example .
3) Entfernen Sie die example/package.json und verschieben Sie die Abhängigkeiten und Skripte in das Stammverzeichnis package.json . Ich habe auch einige der anderen generierten Dateien wie babel.config.js in das Stammverzeichnis des Projekts verschoben.
4) Die Verweise auf React Native-Bibliotheken in den Beispiel-Android-Gradle-Dateien und im Xcode-Projekt wurden aktualisiert. Es war genug, ein Suchen und Ersetzen für ../node_modules/react-native durchzuführen und es durch ../../node_modules/react-native ersetzen.
5) Der Pfad zum Namen des Hauptmoduls in MainApplication.java und AppDelegate.m von index auf example/index aktualisiert.
6) Die babel-plugin-module-resolver Module wurden hinzugefügt und wie folgt in babel.config.js konfiguriert. Auf diese Weise können Sie den Bibliothekscode auf die gleiche Weise wie ein Benutzer importieren.
7) Verknüpfen Sie das Bibliotheksprojekt manuell mit dem Beispielprojekt. Dies ist sehr ähnlich zu dem, was Sie normalerweise tun würden, aber der Pfad auf Android in settings.gradle wird nur ../../android ( so ).
8) Ich habe dann die nativen Codedateien verschoben und sie mit einem Präfix von RNC (React Native Community) anstelle des alten RCT . Ich habe den Javascript-Code in js und den Indexpfad in package.json geändert.
9) Ich habe dann die Beispiele von RNTester in das example -Projekt verschoben und den Code ein wenig aufgeräumt. Gerne können Sie die example/index.js -Datei verwenden, um die Beispiele zu enthalten, die Sie von RNTester kopiert haben. Es ist nur eine leichte Hülle wie ursprünglich in RNTester.
10) Ich habe das Projekt ein wenig aufgeräumt, damit es mit der Einrichtung der reaktionsnativen Webansicht übereinstimmt . Die wichtigsten Änderungen betrafen die Android-Gradle-Dateien.

Hoffentlich hilft das den Leuten :)

@pvinis Ich denke, es gibt viele Überschneidungen zwischen dem Zeigen der example im Projekt erfüllt so ziemlich beide Zwecke gleichzeitig.

Für automatisierte Tests habe ich mich noch nicht vollständig damit befasst. Bisher habe ich jedoch Jet (basierend auf Detox und verwendet von react-native-firebase ) verwendet, um End-to-End-Tests mit React-Native- durchzuführen. Lage .

Genial. Ich habe den gleichen Vorgang vor einigen Tagen durchgeführt, als ich versucht habe, einige App-Funktionen in eine Bibliothek zu extrahieren. Ich habe das Löschen von package.json und ein paar andere kleine Schritte nicht durchgeführt. Ich werde versuchen, alles zu überprüfen, was Sie und ich getan haben, und prüfen, ob es noch unklare Dinge gibt.

Danke für die Details. :) :)

@cpojer SnapshotViewIOS scheint auch intern für einige iOS-Integrationstests verwendet zu werden. Es ist nur verfügbar, wenn Sie eine Verknüpfung mit dem nativen Modul RCTTest . Die Verwendung erfolgt hier: https://github.com/facebook/react-native/blob/master/RNTester/js/RNTesterApp.ios.js#L180

Entfernen wir nur SnapshotViewIOS aus dem öffentlichen RN-Export, dh es sollte weiterhin privat für die Testnutzung verfügbar sein?

Es gab einige Diskussionen darüber, wie der Verlauf der importierten Dateien beibehalten werden kann. Ich fand diese Anleitung sehr nützlich und erlaubte mir, sie für das NetInfo-Modul zu erstellen:

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

Zusammenfassend müssen Sie zunächst herausfinden, welche Dateien Sie kopieren müssen. Anschließend erstellen Sie ein Skript wie folgt:

#!/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

Sie sollten diese Datei irgendwo außerhalb des Repositorys ablegen.

Sie müssen dann die folgenden Befehle ausführen:

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

Der erste Befehl filter-branch dauert eine Weile und verwendet das Skript, um alle Dateien, an denen Sie interessiert sind, in einen einzigen Ordner zu verschieben. Der zweite Befehl sollte ziemlich schnell sein und die Dateien aus dem neuen Ordner in das Stammverzeichnis verschieben und dann nur die Commits beibehalten, die die Dateien ändern, die Sie behalten möchten.

Sie können dann einen Verlauf wie diesen erhalten: https://github.com/react-native-community/react-native-netinfo/commits/master

hi, @cpojer ich würde gerne daran arbeiten

  • Verschieben Sie ProgressViewIOS in ein Community-Repo

Vielen Dank

Hinweis zum Abrufen der Polyfüllung:

Entfernen Sie die Abruf-Polyfüllung aus dem Repo und verwenden Sie whatwg-fetch nach Möglichkeit direkt wieder

Wir mussten es teilen, weil unser Blob-Modul nicht Standard ist und seine Ressourcen nicht automatisch freigibt. Es sollte einfacher sein, die automatische Ressourcenbereinigung mit dem neuen nativen Modulsystem zu implementieren, aber bis dahin sollten wir die gegabelte Polyfüllung beibehalten.

@cpojer Wenn Sie "Teilen" in das Community-Repo verschieben, wird derzeit auf ein anderes Repository verwiesen, das über ein umfangreiches Feature-Set verfügt als die Freigabe im React-Native. Ich hätte also gerne ein neues Repository mit dem Namen "react-native-simple-share" oder so ähnlich.

Bitte schauen Sie sich diesen Zweig an (ich werde dieses Repo löschen, sobald wir ein neues Community-Repo erhalten).

Hinweis zum Abrufen der Polyfüllung:

Entfernen Sie die Abruf-Polyfüllung aus dem Repo und verwenden Sie whatwg-fetch nach Möglichkeit direkt wieder

Wir mussten es teilen, weil unser Blob-Modul nicht Standard ist und seine Ressourcen nicht automatisch freigibt. Es sollte einfacher sein, die automatische Ressourcenbereinigung mit dem neuen nativen Modulsystem zu implementieren, aber bis dahin sollten wir die gegabelte Polyfüllung beibehalten.

Da ich AbortController.Signal-Unterstützung benötige, wollte ich ein Update für die gegabelte Polyfüllung durchführen. Würde das zur Zukunft der Abruf-Polyfüllung im Kern passen?

@cpojer Ich würde gerne an PushNotificationIOS arbeiten.

@cpojer Ich könnte helfen

  • Verschieben Sie ImageEditor in ein Community-Repo

Vielen Dank!

@ nicholaslee119 Erstellt https://github.com/react-native-community/react-native-progress-view für Sie. Überprüfen Sie die obigen Kommentare, wie Sie Fortschritte erzielen können.
@ Ansalibrahim Guter Punkt. Erstellt https://github.com/react-native-community/react-native-simple-share für Sie. Bitte senden Sie dort eine PR!
@rafaellincoln Erstellt https://github.com/react-native-community/react-native-push-notification-ios, an dem Sie arbeiten können.
@dratwas @Trancever ist bereits dabei, bitte arbeiten Sie mit ihm an dem Repo, das dafür erstellt wurde.
@ Jyrno42 Können wir ein Upgrade auf eine Polyfill eines Drittanbieters durchführen, die alle erforderlichen Funktionen unterstützt?

@cpojer Entschuldigung, ich habe nicht gesehen, dass @Trancever darauf ist.
Ich könnte Move ImageStore to a community repo wenn es nicht schon genommen ist oder Move ImagePickerIOS to a community repo

Kann mir jemand sagen, warum AsycnStorage und PushNotificationIOS entfernt werden? Ich denke, beide werden von vielen Apps verwendet. Vielleicht könnten wir sie in die Community verschieben, anstatt sie nur zu entfernen?

Insbesondere PushNoticationIos wird von vielen Menschen verwendet. Ich verwende https://github.com/zo0r/react-native-push-notification, das PushNotificationIos verwendet. Gibt es eine bessere Alternative, die ich nicht kenne?

@vdlindenmark AsyncStorage wird nicht entfernt, sondern in die Community verschoben

Ich würde gerne Picker nehmen !!!

Wenn Move ImagePickerIOS to a community repo noch nicht vergeben ist, helfe ich gerne 😄

Hey @cpojer Ich habe # 23359 für die Zusammenführung von PickerIOS und Picker eingereicht. Lesen Sie bitte :).

Dieses Problem sollte angeheftet werden 📌

@dratwas Es tut mir leid, ich wurde dort verwirrt. Wir lehnen ImageStore tatsächlich vollständig ab, da bereits Optionen von Drittanbietern verfügbar sind, wie von @EvanBacon hervorgehoben. Möchten Sie sich freiwillig für ein anderes Modul melden?
@vdlindenmark, wie @Krizzu hervorhebt , werden diese beiden Module in Community-Modulen bleiben.
@Keraito Ich habe https://github.com/react-native-community/react-native-image-picker-ios erstellt, an das Sie eine PR senden können.
@andersonaddo fertig! Danke für den Vorschlag.

@cpojer Ich frage mich, ob ihr auch die Möglichkeit AccessibilityInfo in ein Community-Repo zu verschieben.

Ich weiß nicht, ob es außerhalb des Kerns leben könnte, aber ich sehe den Vorteil, die Unterstützung für Barrierefreiheit auf React-Native zu erhöhen.

Es gibt bereits einige Vorschläge, um die Unterstützung für Barrierefreiheit in der Ansichtsebene zu verbessern und sie plattformübergreifender zu gestalten (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), aber etwas, das RN nicht tut Derzeit nicht verfügbar, und es gibt kein Problem oder keinen Vorschlag dazu, ist der Zugriff für die a11y-Einstellungen einiger Benutzer auf Betriebssystemebene. Zum Beispiel: Es gibt keine Möglichkeit, die Option "Bewegung reduzieren" zu erhalten, die zum Anpassen der App durch Reduzieren / Deaktivieren von Animationen erforderlich ist.

Ich denke, dass diese Optionen, die von UIAccessibility unter iOS bereitgestellt werden (ich kenne das Äquivalent unter Android nicht), ab AccessibilityInfo verfügbar sein könnten.

Und ein Community-Repo könnte mehr Beiträge für dieses spezielle Problem anziehen.

Vielen Dank.

@cpojer Ich kann kein nicht zugewiesenes Modul sehen, daher werde ich mit @Trancever sprechen, wenn ich helfen könnte bei:

  • Verschieben Sie ImageEditor in ein Community-Repo

@elucaswork Barrierefreiheit ist unglaublich wichtig und ich glaube, es muss Teil von React Native selbst sein. Wir sollten alles tun, um die Unterstützung für Barrierefreiheit in React Native sofort zu verbessern.
@dratwas klingt gut!

  • Verschieben Sie Picker in ein Community-Repo.

@cpojer könnte ich dieses Problem starten?

Etwas, das RN derzeit nicht bereitstellt, und es gibt kein Problem oder keinen Vorschlag dazu, ist der Zugriff auf die a11y-Einstellungen einiger Benutzer auf Betriebssystemebene. Zum Beispiel: Es gibt keine Möglichkeit, die Option "Bewegung reduzieren" zu erhalten, die zum Anpassen der App durch Reduzieren / Deaktivieren von Animationen erforderlich ist.

Ich denke, diese Optionen, die von UIAccessibility unter iOS bereitgestellt werden (ich kenne das Äquivalent unter Android nicht), könnten ab AccessibilityInfo verfügbar sein.

Ich habe mich erst heute gefragt, wie ich die Option "Bewegung reduzieren" in React Native lesen soll, aber es scheint, dass sie nicht implementiert wurde.

Was wäre der beste Weg, um eine Feature-Anfrage zu stellen und eine gewisse Sichtbarkeit dafür zu erhalten? Ist https://react-native.canny.io/feature-requests immer noch das bevorzugte Forum für Feature-Anfragen?

Was sollen wir mit VibrationIOS ? Es wurde seit März 2016 zugunsten von Vibration als veraltet markiert. Scheint ein einfacher Kandidat für die Entfernung zu sein.

@hramos toller Vorschlag! Ich werde mich darum kümmern, diesen zu entfernen.

@cpojer Ich habe festgestellt, dass der Picker / PickerIOS niemandem zugewiesen wurde. Ich würde auch gerne daran arbeiten, wenn es überhaupt möglich ist.

Hallo @rafaellincoln , für Picker-Sachen, ich denke, wir planen, es zuerst in RN Repo selbst zu kombinieren und dann in Community Repo zu verschieben. Zum Zusammenführen habe ich PR # 23359 eingereicht

Ich wollte ein kurzes Update über die Fortschritte geben, die alle bei den Lean Core-Bemühungen gemacht haben. Ich möchte nur sagen, wie überwältigt ich von all Ihren Beiträgen in etwas mehr als einer Woche bin. Vielen Dank!

Hier sind alle Arbeiten, die bereits abgeschlossen sind:

  • NetInfo (https://github.com/react-native-community/react-native-netinfo) wurde erfolgreich aufgeteilt und auf npm über @ react-native-community / netinfo von @ matt-oakes veröffentlicht, der sogar neue Tests hinzufügte und neue Funktionen für das Modul!
  • ViewPagerIOS (https://github.com/react-native-community/react-native-viewpager/pull/1) wurde von @ferrannp erfolgreich aufgeteilt.
  • AsyncStorage (https://github.com/react-native-community/react-native-async-storage) wurde von @Krizzu herausgezogen.
  • StatusBar (https://github.com/react-native-community/react-native-statusbar/pull/1) wurde von @dmtrKovalenko in ein separates Repo verschoben.
  • Der Slider (https://github.com/react-native-community/react-native-slider/pull/1) wurde von @michalchudziak aufgeteilt.
  • MaskedViewIOS (https://github.com/react-native-community/react-native-masked-view/pull/1) wurde von @FonDorn in ein Community-Repo umgewandelt.
  • PushNotificationIOS (https://github.com/react-native-community/react-native-push-notification-ios/pull/1) wurde von @rafaellincoln extrahiert.
  • ImageEditor (https://github.com/react-native-community/react-native-image-editor/pull/1) wurde von @Trancever extrahiert.
  • @EvanBacon hat in # 23330 eine Verfallsmeldung für ImageStore hinzugefügt.
  • @wellmonge hat AlertIOS und Alert in # 23318 zusammengeführt.
  • Die Callstack-Ingenieure haben die erste Version der neuen React Native CLI veröffentlicht: https://blog.callstack.io/the-react-native-cli-has-a-new-home-79b63838f0e6

Ich möchte auch hervorheben, wie das Extrahieren dieser Module zu einer besseren Wartung dieser Module führen kann, dh @ matt-oakes fügte Tests für NetInfo hinzu (https://github.com/react-native-community/react-native-netinfo/pull/). 4) und @ifsnow haben AsyncStorage Flow-Typen hinzugefügt (https://github.com/react-native-community/react-native-async-storage/pull/4). Durch die Entkopplung dieser Komponenten von React Native (und Facebook) können sie sich einzeln viel schneller bewegen, ohne von einem Facebook-Mitarbeiter blockiert zu werden. Da wir vorhandene Probleme und Pull-Anforderungen aus dem React Native-Repository migrieren können, wird es auch einfacher, React Native selbst zu verwalten, und wir können schneller auf Pull-Anforderungen reagieren!

Daran arbeiten wir oder arbeiten wir als nächstes:

  • Entfernen Sie VibrationIOS
  • Entfernen Sie nicht verwendete Abhängigkeiten von Drittanbietern
  • Starten Sie die Migration des internen Facebook-Codes, um die neuen React-Native-Community-Pakete zu verwenden

Nochmals vielen Dank an alle, die bisher geholfen haben!

@cpojer

  • Entfernen Sie nicht verwendete Abhängigkeiten
  • Identifizieren Sie alle Abhängigkeiten in package.json, die in React Native nicht direkt verwendet werden

Die oben genannten Aufgaben werden mit den PRs Nr. 23428 und Nr. 23467 ausgeführt

@cpojer

  • SwipeableList entfernen

Wenn Sie möchten, können Sie auch ListView entfernen.

FWIW, CameraRoll ist von ListView abhängig. Vielleicht wäre es hilfreich, es zuerst zu entfernen, um ListView zu entfernen.

FWIW, CameraRoll ist von ListView abhängig. Vielleicht wäre es hilfreich, es zuerst zu entfernen, um ListView zu entfernen.

Die CameraRollView-Datei in RNTester scheint das einzige zu sein, das ListView in ReactNative verwendet. Vielleicht wäre eine PR, um das gegen FlatList auszutauschen, eine gute Sache, um diese Abhängigkeit zu überwinden. Ich würde das gerne akzeptieren, wenn es passiert, bevor CameraRoll vollständig herausgezogen wird

Im Vergleich zu anderen Versionen wird die Größe erhöht, was ein wichtiger Punkt ist. Gibt es also eine Möglichkeit, die Größe in reaktionsnativen 0,58,4 zu reduzieren? Nur für eine Seite wurden 18 MB benötigt
Das Folgende sind meine Abhängigkeiten
"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"

ich sah, dass navigatorIos von rn 0.59 entfernt wurde. Ich habe mich gefragt, ob es bereits ein Community-Paket dafür gibt. @cpojer

@cpojer Ich kann daran arbeiten, wenn jemand noch nicht damit begonnen hat

  • Entfernen Sie die Abruf-Polyfüllung aus dem Repo und verwenden Sie whatwg-fetch nach Möglichkeit direkt wieder

@ Nimish-Gupta Probieren Sie es aus! Es mag einige Fallstricke geben, aber wir können das in der PR diskutieren und sehen, wie es geht. Es ist vielleicht nicht machbar, aber lassen Sie uns versuchen zu sehen, wie weit wir kommen können.

@cpojer Ich frage mich, ob KeyboardAvoidingView nützlich genug ist, um im Kern zu bleiben.
Haben Sie darüber nachgedacht, es ebenfalls zu entfernen, um Platz für robustere Lösungen wie https://github.com/APSL/react-native-keyboard-aware-scroll-view zu schaffen , oder ist es sehr nützlich, im Kern zu bleiben? ?

@elucaswork wir verwenden das bei FB überraschend

Tolle Arbeit hier. Ich habe jedoch versucht, NetInfo und AsyncStorage zu verwenden, und es scheint, dass ihnen podspec Dateien fehlen. @cpojer Ich denke, viele von uns verwenden Pods. reaktionsnativen Paketen machen, die native iOS-Codes haben?

Tolle Arbeit hier. Ich habe jedoch versucht, NetInfo und AsyncStorage zu verwenden, und es scheint, dass ihnen podspec Dateien fehlen. @cpojer Ich denke, viele von uns verwenden Pods. reaktionsnativen Paketen machen, die native iOS-Codes haben?

Es sieht so aus, als hätten diese Unterspezifikationen in der React Native-Poddatei, die wahrscheinlich zu den neuen Repos hinzugefügt werden müssen: https://github.com/facebook/react-native/blob/master/React.podspec#L301 -L304

@syaau @TheSavior Guter Ort. Ich habe eine PR geöffnet, um dem neuen NetInfo-Repo eine Podspec hinzuzufügen:

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

@cpojer meiner Erfahrung nach ist KeyboardAvoidingView wirklich schuppig, vielleicht ist dies eine gute Gelegenheit, es zu verbessern, wenn es im Kern bleibt?

Ich möchte vorschlagen, dass wir ART zugunsten von react-native-svg .

@justDanielMata Ja, ich denke definitiv, dass es verbessert werden sollte, wenn es im Kern bleibt, aber das sollte in einer anderen Diskussion behandelt werden.
@EvanBacon Ich werde dies mit dem Team besprechen und mich bei Ihnen

Entfernen Sie WebView aus dem RN-Repo

Ich nehme das gerne an

@ericlewis leider, dass man nur von FB Seite machen kann, weil wir intern immer noch darauf angewiesen sind.

NavigatorIos wurde aus react-native . @Cpojer Kannst du bitte ein Repo dafür unter react-native-community erstellen? Ich möchte es zurücksetzen, wenn das in Ordnung ist

Ich habe eine funktionierende Version hier
https://github.com/michaelknoch/react-native-navigator-ios

@sijad (fyi: Ich habe keine Importe von

@sijad Wir react-native-community einfügen , die wir weiterhin empfehlen. Die Komponenten, die wir als Teil von Lean Core aus React Native entfernen, sind allesamt gute Komponenten, die Sie in Ihren Apps verwenden können. NavigatorIOS ist nicht etwas, das die Benutzer weiterhin verwenden sollen, da wir andere Navigationslösungen empfehlen. Es scheint jedoch, dass @michaelknoch es auf sich genommen hat, es zu pflegen. Ich empfehle daher, diese Version zu verwenden, bis Sie zu etwas anderem wechseln können.

aber warum raten Sie von der Verwendung von Navigatorien ab? Denken Sie, dass die Leistung der JS-basierten Navigation (z. B. React-Navigation) schnell genug ist, sodass die native Navigation nicht mehr obligatorisch ist?
@cpojer

@cpojer Hi, habe gerade eine PR für ProgressViewIOS erstellt https://github.com/react-native-community/react-native-progress-view/pull/1

@michaelknoch im Gegenteil, wir empfehlen Ihnen auf jeden Fall, eine native Navigationslösung zu verwenden. Es kommt einfach vor, dass NavigatorIOS ein altes Navigationssystem war, das wir bei Facebook nicht mehr verwenden. Derzeit verwenden wir bei Facebook unser eigenes natives Navigationssystem, das leider nicht Open Source ist. Wir empfehlen Personen, https://github.com/wix/react-native-navigation zu verwenden
@kdenz super , ich werde es überprüfen!

@cpojer Ich habe gerade die Migration und Zusammenfassung von SegmentedControlIos abgeschlossen und eine Beispiel-App hinzugefügt.

  • Testete die Komponente und alles funktioniert gut in einem neuen RN-Projekt.
  • Freigegeben an npm .

@cpojer hat die Umstellung der Zwischenablage- API vom RN-Kern auf die Community-Version abgeschlossen und eine Beispiel-App hinzugefügt, um alles zu testen.

  • Testete die Komponente und alles funktioniert gut in einem neuen RN-Projekt.
  • Freigegeben an npm .

@cpojer Ich habe vor kurzem mit

  • Verschieben Sie das native "TestModule" in RNTester

wenn es noch nicht gelöst ist!

@cpojer was ist mit Toast Komponente? Ich denke, es sollte jetzt veraltet und später entfernt werden.
Gründe dafür:

  1. Toast ist nur eine andere Art / Art der Benachrichtigung. Es gibt viele Arten von Benachrichtigungskomponenten
  2. Existiert nur für die Android-Implementierung
  3. Es gibt unzählige "toastähnliche" Komponenten, die von der Community https://github.com/search?q=react+native+toast verwaltet werden und plattformübergreifend sind

Was denkst du darüber?

Ich bin daran interessiert, TabBarIOS in der Nähe zu halten und zu pflegen / zukunftssicher zu machen. Ich halte es zusammen mit NavigatorIOS für eine sehr leichte Lösung mit erstklassiger Zugänglichkeit.

Wenn es die allgemeine Meinung ist, dass es nicht unter React-Native-Community stehen sollte, da es wie NavigatorIOS bereits veraltet ist, würde ich dies auf eigene Rechnung tun, aber ich würde es unter dem Dach von -community vorziehen.

Gab es einen anderen Grund für die Ablehnung als die, die nicht in Facebook verwendet wurde und nur für iOS (was ein anständiger Grund ist)?

Ich habe hier eine Arbeitsversion: https://github.com/michaelknoch/react-native-tabbar-ios

@ Karlsander

Hallo, ich verschiebe den nativen ActionSheetIOS-Code zur Ausstellung. Bitte überprüfen Sie 🙇
https://github.com/expo/react-native-action-sheet/pull/105

Ich habe versucht herauszufinden, wo react-clone-referenced-element verwendet wird, aber ohne Glück. Vermisse ich etwas Ich bin neu darin, Beiträge zu leisten und auf native Codebasis zu reagieren. Tut mir leid, wenn es eine dumme Frage ist.

@ Rendfold du vermisst nichts, ich habe mich genau das gleiche gefragt.

Hier ist das relevante Commit, in dem es hinzugefügt wurde: https://github.com/facebook/react-native/commit/665954efcc4460839d00a572be84cf204a42c0d5

Es sieht so aus, als ob es die Abhängigkeit befriedigen soll, nachdem ListView entfernt wurde. Ich glaube, das wird auch nur in Facebook verwendet.

@ericlewis es wurde dort aktualisiert, aber nicht hinzugefügt, also ging ich weiter. Musste zu 2016 Commits gehen, um herauszufinden, wo es eaba2abc0b76f9a26703c87eecf4a8bb52f9ed3e war
Aber ja, Sie hatten Recht, es ist für ListView.

@cpojer Ich habe in DrawerLayout / DrawerLayoutAndroid für # 23730 gestochert und es scheint ziemlich isoliert zu sein.

Wäre es ein guter Kandidat, auch zu extrahieren? Ich übernehme das gerne.

Ich habe festgestellt, dass von den hier genannten Modulen nur " React-Native-Async -Storage" und " React-Native-Netinfo" die e2e-Tests für beide Plattformen -Native-Cameronaroll hat sie ebenfalls, aber die Tests auf Android

Ich habe mich kürzlich mit dem e2e-Testen von React-Native-SVG mit Detox befasst und es auf Travis und Bitrise eingerichtet:
https://travis-ci.org/msand/react-native-svg-e2e/builds
https://app.bitrise.io/app/1a150b039e9b8fbd#/builds

Ich habe es gemacht, Screenshots sowohl auf iOS als auch auf Android zu machen und neue Projekteinstellungen in einfachem React-Native für beide und zusätzlich mit Cocoapods für iOS zu testen.

Ich habe keinen Zugriff auf Setup-Bitrise für das React-Native- SVG -Repo.

Um es ohne kvm auf Travis und Bitrise zum Laufen zu bringen, waren der neueste Emulator-Kanarienvogel und viele Versuche erforderlich, eine funktionierende Konfiguration zu finden, da diese keine Beschleunigung unterstützen. Falls ein anderes Modul daran interessiert ist, e2e an einem anderen Ort als circleci einzurichten, kann dieses Repo von Nutzen sein: https://github.com/msand/react-native-svg-e2e

Off Topic: Wenn jemand daran interessiert ist, beim Testen von react-native-svg zu helfen, wäre es großartig, ein Skript / eine App zu erhalten, um die Tests von hier aus auszuführen: https://github.com/web-platform-tests/ wpt / tree / master / svg
Kann wahrscheinlich https://github.com/kristerkari/react-native-svg-transformer verwenden , um die SVG-Dateien so zu laden, wie sie sind, und dann wäre ein Vergleichsschritt mit Screenshots wirklich hilfreich.

In Bezug auf die Abwertung / Aufteilung von ART unterstütze ich es, es vom reaktionsnativen Repo zu trennen, es so weiterleben zu lassen und Fehlerbehebungen / Leistungsverbesserungen zu erhalten. Zumindest wenn Sie nur einfache Pfaddaten haben, die Sie rendern möchten, und keine anderen Teile der SVG-Spezifikation benötigen, ist es wahrscheinlich, dass ART leistungsfähiger ist, wenn es zumindest in React-Native verwendet wird. Da es nicht so viele Funktionen unterstützen muss wie etwas, das auf volle SVG-Spezifikationskonformität abzielt.

Wenn Sie mit ART im Web auf Leinwand rendern, ist dies je nach Anwendungsfall möglicherweise auch schneller als svg. Profil, um Ihre tatsächlichen Hotspots / Engpässe zu finden, bevor Sie sich um diese Art der Optimierung bemühen, und führen Sie in diesem Fall korrekte A / B-Messungen mit Statistiken über genügend Daten durch. Und wenn Sie vorhandenen Code mit ART haben, ist es wahrscheinlich in Ordnung, so zu bleiben, wie er ist. Aber für neuen Code würde ich wahrscheinlich empfehlen, spezifikationskonformes SVG zu verwenden und es auf eine (reaktionsnativ-) webkompatible Weise zu schreiben (es sei denn, es erfordert Leistung auf Canvas- / Webgl-Ebene). Zu diesem Zweck wird auch eine Implementierung der Kompatibilitätsindex.web.js in der kommenden Version von react-native-svg enthalten sein.

Ich habe mich erst heute gefragt, wie ich die Option "Bewegung reduzieren" in React Native lesen soll, aber es scheint, dass sie nicht implementiert wurde.
Was wäre der beste Weg, um eine Feature-Anfrage zu stellen und eine gewisse Sichtbarkeit dafür zu erhalten? Ist https://react-native.canny.io/feature-requests immer noch das bevorzugte Forum für Feature-Anfragen?

@kristerkari Ich habe eine PR eingereicht, die Unterstützung für "Bewegung reduzieren" in AccessibilityInfo hinzufügt
https://github.com/facebook/react-native/pull/23839

@cpojer Hallo, es tut mir leid, dass ich eine Weile weg war. Ich habe die React-Native-Status-Leiste erfolgreich verschoben. Aber nicht im Kern veraltet. Soll ich es jetzt tun?
Außerdem plane ich, eine zusätzliche Version für das Paket "React-Native-Statusleiste" zu erstellen.

@dmtrKovalenko ja, bitte!

PR für die Statusleiste für Verfall erstellt -> # 23898

Ich habe keinen Zugriff auf Setup-Bitrise für das React-Native- SVG -Repo.

@msand Ich denke, jeder hat sich für CircleCI entschieden, weil es schneller läuft als von @gengjiawen gemessen , aber ich bin mir nicht sicher, ob das "offiziell" ist.

React-Native-Cameronaroll hat sie auch, aber die Tests auf Android schlagen fehl.

Ich habe einige Probleme damit, den Android-Test zu bestehen. Der Test ist wirklich einfach (startet die App), also ist es etwas in der Konfiguration. Ich habe die Konfiguration von netinfo kopiert, aber sie funktioniert nicht sofort. @ matt-oakes siehst du auf einen Blick, ob ich etwas Besonderes vermisst habe?

@bartolkaruza Dies habe ich im NetInfo-Repository hier behoben: https://github.com/react-native-community/react-native-netinfo/pull/25

Ich werde jetzt eine PR einreichen, um Camera Roll zu reparieren.

@cpojer irgendwelche Pläne, tvOS aus dem Kern zu extrahieren?

Ich denke, wir sollten auch Button entfernen.

Entfernen oder extrahieren? Ich würde lieber extrahieren als entfernen.

Eine Frage für reaktionsnative Bibliotheken, die derzeit Funktionen verwenden, die in Community-Module extrahiert werden:

Was ist der empfohlene Ansatz, um sich auf extrahierte Module zu verlassen? Direkte Abhängigkeiten oder PeerDependencies?

Beispielsweise verwendet Reactotron-React-Native derzeit AsyncStorage direkt. Wenn React-Native-Asyncstorage als direkte Abhängigkeit verwendet wird, kann dies dazu führen, dass mehrere Versionen in der konsumierenden App verwendet werden. Ist dies geplant oder sollte es eine Peer-Abhängigkeit sein?

Ich denke, es sollte eine Abhängigkeit sein, und AsyncStorage definiert ReactNative als PeerDependency. Auf diese Weise können mehrere Versionen von AsyncStorage in derselben App verwendet werden (außer Sie möchten sicherstellen, dass Sie dieselbe verwenden, und Sie legen es klar in der Bibliothek ab readme), aber der Installationsprozess zeigt eine Warnung an, wenn die ReactNative-Abhängigkeit nicht erfüllt werden kann.

Ist es so einfach? Wäre es nicht möglicherweise mehrere Versionen des genannten nativen Moduls "AsyncStorage"? Ich denke, das könnte zu Problemen führen oder nicht?

Ja, es würde mehrere Versionen geben, aber wenn jede eigenständig ist und keine Daten zwischen ihnen austauscht, sollte es keine Probleme geben.

Hallo @cpojer, ich möchte bei einigen dieser Probleme helfen.

Hey @wagnermaciel , ich und @bartolkaruza arbeiten daran. Und fast fertig. @cpojer kannst du bitte ein Community Repo erstellen. Eigentlich denke ich, dass der Plan ist, es in die Community zu verschieben und beide Komponenten zusammenzuführen.

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

@jainkuniya Keine Sorge. @cpojer Gibt es hier irgendwelche Probleme, die Sie mir zuweisen könnten? Ich arbeite mit einer Gruppe von Freunden zusammen und wir sind alle daran interessiert, uns auf jede erdenkliche Weise zu engagieren 👍

@wagnermaciel danke, dass hast ! Ich habe gerade den ursprünglichen Beitrag aktualisiert und Personen entfernt, die auf die Aufgaben, für die sie sich angemeldet haben, nicht reagiert haben. Alle oben genannten Personen ohne Namen können von Ihnen abgeholt werden, wenn Sie möchten. An welchem ​​willst du arbeiten?

Hallo @cpojer , darf ich beauftragt werden, "ImagePickerIOS in ein Community-Repo" zu verschieben - ich werde es gerne pflegen. Vielen Dank im Voraus!

@ aerlinn13 Ich lege dich dafür nieder. Schicken Sie einfach eine PR an das Repo und pingen Sie mich an und wir kümmern uns von dort aus darum :) Danke!

@cpojer Danke für die schnelle Antwort! Könnten Sie mir "ProgressBarAndroid aus dem Repository entfernen, möglicherweise in das Community-Repo verschieben" zuweisen? Ich würde gerne daran arbeiten. Vielen Dank!!!

@wagnermaciel fertig! Freue mich auf deinen Beitrag :)

Hallo @cpojer , ich möchte die ToastAndroid-Komponente erwähnen. Hast du eine Idee, was du damit machen sollst?
Es sieht so aus, als ob ToastAndroid in HMRLoadingView und LinkingExample verwendet wird. Es ist daher fraglich, wie der Benachrichtigungstyp für diese beiden Komponenten ersetzt werden kann.
Wie auch immer, wenn es intern von FB verwendet wird, ist es derzeit kein Problem und ignoriere meinen Kommentar :)

Mein ursprünglicher Beitrag:

@cpojer was ist mit Toast Komponente? Ich denke, es sollte jetzt veraltet und später entfernt werden.
Gründe dafür:

  1. Toast ist nur eine andere Art / Art der Benachrichtigung. Es gibt viele Arten von Benachrichtigungskomponenten
  2. Existiert nur für die Android-Implementierung
  3. Es gibt unzählige "toastähnliche" Komponenten, die von der Community https://github.com/search?q=react+native+toast verwaltet werden und plattformübergreifend sind

Was denkst du darüber?

@radeno Ich glaube nicht, dass wir es jetzt entfernen werden, aber wir werden uns vielleicht dafür entscheiden, das später zu tun.

Entschuldigung, @cpojer war letzten Monat sehr beschäftigt, aber ich werde heute die Arbeit an ProgressViewIOS wieder aufnehmen

@cpojer Ich habe gerade bemerkt, dass "StatusBarIOS verwerfen" aktiviert ist, aber StatusBarIOS.ios und StatusBarIOS.android haben sich seit 2018 nicht geändert. Habe ich etwas übersehen?

Wenn nichts fehlt, tut mir leid. Ansonsten lass es mich wissen, denn ich kann dir helfen.

@cpojer Können Sie

@cpojer ist bereit, alle noch nicht zugewiesenen Komponenten zu verschieben oder die Überwachung von JS-Abhängigkeiten in Angriff zu nehmen.

@cpojer Ich möchte einen Beitrag zu

Was sind die obersten Prioritäten? Benötigen Sie weitere Hilfe bei den oben genannten Problemen (z. B. ProgressViewIOS in ein Community-Repo verschieben) oder bei den Problemen, die sich in einem zukünftigen Arbeitsbereich befinden? Es gibt einige, denen niemand zugewiesen wurde (z. B. derjenige, der ProgressViewIOS verschiebt), der jedoch den Thread liest, für den sie anscheinend bereits vergeben sind.

Die Hauptprioritäten von

Haben wir die Anweisungen zum Erstellen einer neuen RNC-Bibliothek irgendwo in einem Wiki oder so? Sie sind nützlich, um sie zu behalten und für andere zu finden, nicht nur für RNC, sondern als eine Art Vorlage / Richtlinien für alle Bibliotheken.

Ich fand gerade diese tatsächlich, aber es ist noch nicht fertig. :) :)

Ich denke, die nächsten Kandidaten sind:

  • KeyboardAvoidingView, SafeAreaView
  • Modal (?).

Würde mich freuen, SafeAreaView !

Sind diese Migrationen vom Kern noch zu gewinnen? Wenn ja, wie lauten die aktuellen nächsten Kandidaten? Ich würde gerne versuchen, auch mitzuhelfen :)

Ich denke, @brentvatne @ide @ericvicenti @kmagiera hat Meinungen darüber informiert, was noch verschoben werden könnte, und hat keinen Einfluss auf die Entwicklererfahrung, wenn Bibliotheken von Drittanbietern wie React-Navigation und Reanimated verwendet werden.

Eines der Dinge, bei denen wir Hilfe gebrauchen könnten, ist die Beseitigung der Verwendung von ToolbarAndroid in RNTester unter Android. Könnte jemand daran arbeiten, seine Verwendung durch etwas anderes zu ersetzen?

Ich habe gerade die Aktualisierung des Beitrags der obersten Ebene abgeschlossen. ImagePickerIOS ist eine der nicht beanspruchten Komponenten, bei denen die Komponente noch nicht extrahiert wurde. Gibt es jemanden, der sich die Mühe machen und eine PR an das unter https://github.com/react-native-community/react-native-image-picker-ios erstellte Repository senden möchte?

Schließlich scheint es, dass die Arbeit an DatePickerIOS und DatePickerAndroid nie zustande gekommen ist, siehe https://github.com/react-native-community/discussions-and-proposals/pull/85 - Dies ist eine gute Gelegenheit! Im Idealfall übernimmt jemand die Verantwortung, beide DatePicker-Komponenten in dieses Repo zu extrahieren: https://github.com/react-native-community/react-native-datepicker

Mit zwei High-Level-Exporten, DatePickerIOS und DatePickerAndroid.

Nach der Auslieferung der ersten Version, wenn die Komponenten von RN nicht mehr unterstützt werden, kann die Community die beiden Komponenten zu einer einzigen Komponente zusammenführen.

cc @mmcknett und @Swaagie

ReactART wurde als weiterer Teil von RN hinzugefügt, den wir in ein separates Repo extrahieren möchten: https://github.com/react-native-community/react-native-art

Stellenangebote!

Kann ich DatePickerIOS und DatePickerAndroid ?

@sijad Haben Sie schon einmal mit React Native gearbeitet und haben Sie einen Plan für die Extraktion?

@cpojer Kann ich ReactART ab nächsten Montag einnehmen? Ich evangelisiere derzeit und treibe die RN-Adoption bei der Arbeit voran. Daher musste ich mich sowohl mit ReactART als auch mit dem Verpacken von nativem Code als wiederverwendbare RN-Pakete befassen.

@ivanmoskalev klingt großartig! Lass es mich wissen, wenn du anfängst und mache eine PR für das neue Repo, das ich erstellt habe :)

@cpojer hast du versehentlich den Zweig review komplett übersehen? Es hatte alles Arbeit ohne Dokumente und einige Entgiftungstests.

edit: cc @sijad für das Bewusstsein

Bearbeiten 2: https://github.com/Swaagie/react-native-datetimepicker Alle funktionieren so, wie sie in der Filiale review . Ich habe keine Rechte, dieses Repo-Atm neu zu erstellen, möchte es aber beenden.

Auch @sijad , wenn Sie in Form einer gründlichen Überprüfung und Code-Korrekturen (falls erforderlich) einen Beitrag leisten möchten, wäre dies sehr willkommen!

@cpojer @sijad die Arbeit kam definitiv zustande, wie @Swaagie erwähnte. Ich habe mich auch in Discord gemeldet.

Keine Sorge, den Zweig zu verpassen - es kann leicht übersehen werden. Im Nachhinein hätte ich Martijn raten sollen, eine PR in Draft -Staat zu eröffnen, während er weiterhin die kleineren PRs für die Arbeit machte, die wir ausbrachen und in unsere Sprints steckten.

Gibt es einen Ort, an dem ich helfen könnte, Dokumentation für Standardarbeitsanweisungen für diese kleineren Module in Lean Core auf react-native-community vorzuschlagen? Wir haben viel über das Iterieren von react-native-datetimepicker gelernt - würden gerne mit der breiteren Community teilen, um andere Modularisierungen einfacher / schneller zu machen.

Oh man, ich muss ein Repo mit einem anderen Namen haben und dann neu erstellen -.-

Könnten Sie eine PR an den neuen Datepicker senden?

Wird besorgt! Vielen Dank für die schnelle Abwicklung! Auch keine harten Gefühle, wir sind alle Menschen und wie @crobbins sagte, wir hätten die Arbeit sichtbarer machen sollen.

@cpojer könntest du den Top-Beitrag aktualisieren und mein Github-Handle hinzufügen zu:
Merge DatePickerIOS and DatePickerAndroid, move to community repo
Vielen Dank!

@Swaagie Fertig!

Es wäre erstaunlich, wenn Sie https://github.com/yfuks/react-native-action-sheet übernehmen und mit ActionSheetIOS zusammenführen würden

Wenn Sie ein Repo verwalten möchten, das zum Verschieben von APIs aus dem React Native-Kern erstellt wird, stellen Sie sicher, dass Sie Implementierungen für andere Plattformen unterstützen können, und achten Sie darauf, dass Sie sich die entsprechenden Implementierungen in react-native-web ansehen und reagieren -native-Fenster.

@cpojer machst du wirklich all das oder kann ich mir eins schnappen?
FWIW Ich habe Fortschritte mit RCTImagePickerIOS gemacht und werde in den nächsten Tagen eine PR einreichen.

@ Johan-dutoit ja, leider kann das Entfernen von Modulen nur von einem Facebook-Mitarbeiter durchgeführt werden. Ich freue mich auf Ihre ImagePickerIOS-Extraktion!

@cpojer 🎉PR Eingereicht und getestet 🎉

@cpojer Ich möchte, dass Sie in einer readme.md- Datei, die erklärt, was Sie in jeder der Dateien tun möchten, nativ auf die Ordner reagieren, die als etwas verwirrend angesehen werden. Dies würde diejenigen, die einen Beitrag zum Projekt leisten möchten, erheblich erleichtern. Wie ein Angelhaken

Beispielsweise

image

  • React.js
    Der Hauptzweck dieser Datei ist ...
  • react-native-implementation.js
    Der Hauptzweck dieser Datei ist ...
  • react-native-interface.js
    Der Hauptzweck dieser Datei ist ...

Diese drei Dateien können etwas leicht zu verstehen sein, aber wenn wir solche Dateien haben, kann es etwas kompliziert sein.
image

Offensichtlich müssen sie nicht zu beschreibend sein, geschweige denn beschreiben, was jede Datei tut. Nur die relevanteste oder eine grundlegende Definition dessen, was in einem bestimmten Ordner getan werden soll.

Darüber hinaus wäre es sehr hilfreich, einen Überblick über die Funktionsweise dieses Repositorys zu geben. Ich würde gerne Ihre Meinung erfahren. Danke für alles.

@cpojer Gibt es noch etwas, das ich abholen kann? Würde gerne mitmachen.

Wie @FLGMwt in https://github.com/facebook/react-native/issues/23313#issuecomment -469288200 erwähnt, wäre es großartig, auch DrawerLayoutAndroid herauszunehmen

Es wäre großartig, auch ToastAndroid und Animated zu verschieben

@ecreeth , diese Dateien verwenden createReactClass, da sie auf Mixins

@ TheSavior Vielen Dank für die Information!

Würde gerne dazu beitragen, ich sehe "Move Button to a Community Repo" wurde nicht übernommen. Was getan werden muss? Würde gerne helfen!

Sicher. Überprüfen Sie einfach die anderen wie https://github.com/react-native-community/react-native-netinfo. Sie benötigen den nativen Code für iOS und Android sowie alle js. Leider haben wir keine spezielle Möglichkeit, eine neue Bibliothek zu erstellen.

Hallo, wie man Webview nach dem Entfernen von Webview in RN verwendet

Hallo, würde gerne helfen! Ich sehe, dass alle "Entfernen" -Aufgaben @cpojer zugewiesen wurden.

Hey, ich kann beim Verschieben von DatePickerComponents helfen. Bitte lassen Sie mich wissen, wie ich Ihnen helfen kann.

Hallo @cpojer , ich kann beim Verschieben der CheckBox-Komponente helfen. Es ist dankbar, wenn Sie mich durch den Prozess führen können. Vielen Dank!

Ich bin froh, Button in ein neues Community-Repo zu verlegen. Ich würde mich über eine Anleitung zum weiteren Vorgehen freuen, aber ich werde zunächst einen Blick auf die Quelle werfen und mich orientieren. @cpojer bitte beraten.

PR geöffnet, um Remove DatePickerAndroid, DatePickerIOS, TimePickerAndroid zu entfernen

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

Wie entscheiden wir, wann neue Exporte zum Kern hinzugefügt werden sollen? Beispielsweise kann der Hook useWindowDimensions im Benutzerbereich erstellt werden, wurde jedoch dem Kern hinzugefügt - https://github.com/facebook/react-native/blob/3b3c95b0170e60983eb6e89b910d100d08eee141/Libraries/Utilities/useWindowDimensions .js

Ich denke, unser Denken bei Hooks ist, dass die Modernisierung des reaktionsnativen Kerns zur Bereitstellung von Hooks standardmäßig Sinn macht. Es wäre nicht toll, wenn native nur ältere APIs bereitstellen und die Hooks sie in ein separates Community-Paket einbinden würden.

Daher denke ich, dass Hooks eine spezielle Frage sind, die sich vom allgemeinen Hinzufügen neuer Exporte zum Kern unterscheidet.

Hallo allerseits! Derzeit gibt es keine Maßnahmen, die von Mitgliedern der Community ergriffen werden können. Die derzeit geplanten Umzüge werden aus zwei Gründen ausgesetzt:

  • Wir warten eine Weile, bis wir Komponenten entfernen, damit die Community Zeit hat, auf die extrahierten Versionen zu migrieren.
  • Die Löschungen können nur von jemandem von Facebook durchgeführt werden, da wir diese Dateien nur so verschieben, dass sie Facebook-intern sind, bis wir die externen Module in Zukunft übernehmen.

In Bezug auf Hooks-basierte APIs ist dieses Problem nicht der richtige Weg für diese Diskussion. Generell glaube ich, dass wir Hook-basierte APIs schrittweise hinzufügen sollten, wenn wir unsere öffentliche API in Zukunft überdenken.

Hallo allerseits, ich bin neu darin, zu Open-Source-Projekten beizutragen, und ich würde gerne wissen, ob ich bei diesem Problem noch helfen kann.

Die derzeit geplanten Umzüge werden aus zwei Gründen ausgesetzt ...

War es ein Fehler, dass ToolbarAndroid trotzdem (lautlos) entfernt wurde?

@cpojer Kann ich "Move Button to a Community Repo"

@Archulan Sie können Ihre PR an den -Native-Button senden

@Archulan siehe diesen Kommentar # 23313 (Kommentar)

@Archulan Sie können Ihre PR an den -Native-Button senden

Okay. Können Sie mich bitte dabei unterstützen?

Ich denke, es macht keinen Sinn, Button herauszuziehen. Die Komponente ist sehr klein und hilfreich, um einige grundlegende Funktionen einzurichten, ohne dass Bibliotheken installiert werden müssen.

@ brentvatne

Ich denke, es macht keinen Sinn, Button herauszuziehen.

so seltsam wie react <Button/>

Nach der Revolution sollte es einfach geben

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

andere könnten von der Gemeinschaft angetrieben werden.

um einige grundlegende Funktionen einzurichten.

Vielleicht sollte Monorepo in react-native mit react-native-element wie react mit react-dom

@cpojer Wird Vibration (https://reactnative.dev/docs/vibration) auch in ein Community-Projekt verschoben? Wenn ja, und da es klein genug scheint, um anzufangen, könnte ich dabei helfen.

@cpojer könnte ich ImageStore entfernen?

Ist mögliche Hilfe dabei? Ich bin ein Anfänger und ich denke, ich kann damit viel lernen.
Grüße.
Manuel Portero.

Wenn dabei noch Hilfe benötigt wird, helfe ich gerne 😃

Ich auch

Ich möchte dazu beitragen. Kann ich irgendetwas tun?

Kann ich irgendetwas tun?

Ich möchte einen Beitrag leisten. Kann ich etwas tun?

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen