Native reagieren - Kurzanleitung
Zum besseren Verständnis der React Native-Konzepte werden wir einige Zeilen aus der offiziellen Dokumentation ausleihen -
Mit React Native können Sie mobile Apps nur mit JavaScript erstellen. Es verwendet das gleiche Design wie React, sodass Sie aus deklarativen Komponenten eine umfangreiche mobile Benutzeroberfläche erstellen können. Mit React Native erstellen Sie keine mobile Web-App, HTML5-App oder Hybrid-App. Sie erstellen eine echte mobile App, die sich nicht von einer App unterscheidet, die mit Objective-C oder Java erstellt wurde. React Native verwendet dieselben grundlegenden UI-Bausteine wie normale iOS- und Android-Apps. Sie setzen diese Bausteine einfach mit JavaScript und React zusammen.
Reale native Funktionen
Im Folgenden sind die Funktionen von React Native aufgeführt:
React - Dies ist ein Framework zum Erstellen von Web- und mobilen Apps mit JavaScript.
Native - Sie können native Komponenten verwenden, die von JavaScript gesteuert werden.
Platforms - React Native unterstützt die iOS- und Android-Plattform.
Reagieren Sie auf native Vorteile
Folgen sind die Vorteile von React Native -
JavaScript - Sie können das vorhandene JavaScript-Wissen verwenden, um native mobile Apps zu erstellen.
Code sharing - Sie können den größten Teil Ihres Codes auf verschiedenen Plattformen freigeben.
Community - Die Community um React und React Native ist groß und Sie können jede Antwort finden, die Sie benötigen.
Reagieren Sie auf native Einschränkungen
Im Folgenden sind die Einschränkungen von React Native aufgeführt:
Native Components - Wenn Sie native Funktionen erstellen möchten, die noch nicht erstellt wurden, müssen Sie plattformspezifischen Code schreiben.
Es gibt einige Dinge, die Sie installieren müssen, um die Umgebung für React Native einzurichten. Wir werden OSX als unsere Bauplattform verwenden.
Sr.Nr. | Software | Beschreibung |
---|---|---|
1 | NodeJS und NPM | Sie können unserem Tutorial zur Einrichtung der NodeJS- Umgebung folgen , um NodeJS zu installieren. |
Schritt 1: Installieren Sie die App create-react-native
Nachdem Sie NodeJS und NPM erfolgreich in Ihrem System installiert haben, können Sie mit der Installation der App "create-react-native-app" fortfahren (global wie unten gezeigt).
C:\Users\Tutorialspoint> npm install -g create-react-native-app
Schritt 2: Projekt erstellen
Durchsuchen Sie den erforderlichen Ordner und erstellen Sie ein neues natives Reaktionsprojekt, wie unten gezeigt.
C:\Users\Tutorialspoint>cd Desktop
C:\Users\Tutorialspoint\Desktop>create-react-native-app MyReactNative
Nach dem Ausführen des obigen Befehls wird ein Ordner mit dem angegebenen Namen mit dem folgenden Inhalt erstellt.
Schritt 3: NodeJS Python Jdk8
Stellen Sie sicher, dass Python NodeJS und jdk8 auf Ihrem System installiert sind. Wenn nicht, installieren Sie sie. Zusätzlich zu diesen wird empfohlen, die neueste Version des Garns zu installieren, um bestimmte Probleme zu vermeiden.
Schritt 4: Installieren Sie React Native CLI
Sie können die Befehlszeilenschnittstelle react native auf npm installieren, indem Sie den Befehl install -g react-native-cli wie unten gezeigt verwenden.
npm install -g react-native-cli
Schritt 5: Reagieren Sie nativ
Um die Installation zu überprüfen, durchsuchen Sie den Projektordner und versuchen Sie, das Projekt mit dem Befehl start zu starten.
C:\Users\Tutorialspoint\Desktop>cd MyReactNative
C:\Users\Tutorialspoint\Desktop\MyReactNative>npm start
Wenn alles gut gegangen ist, erhalten Sie einen QR-Code wie unten gezeigt.
Wie angewiesen, besteht eine Möglichkeit, native Apps auf Ihrem Android-Gerät auszuführen, darin, expo zu verwenden. Installieren Sie den Expo-Client in Ihrem Android-Gerät und scannen Sie den oben erhaltenen QR-Code.
Schritt 6: Werfen Sie das Projekt aus
Wenn Sie den Android-Emulator mit Android Studio ausführen möchten, verlassen Sie die aktuelle Befehlszeile durch Drücken von ctrl+c.
Führen Sie dann run aus eject command wie
npm run eject
Dies fordert Sie zum Auswerfen auf, wählen Sie die erste mit den Pfeilen aus und drücken Sie die Eingabetaste.
Anschließend sollten Sie den Namen der App auf dem Startbildschirm und den Projektnamen des Android Studio- und Xcode-Projekts vorschlagen.
Obwohl Ihr Projekt erfolgreich abgeschlossen wurde, wird möglicherweise die folgende Fehlermeldung angezeigt:
Ignorieren Sie diesen Fehler und führen Sie "React Native" für Android mit dem folgenden Befehl aus:
react-native run-android
Aber vorher müssen Sie Android Studio installieren.
Schritt 7: Installieren von Android Studio
Besuchen Sie die Webseite https://developer.android.com/studio/ und Android Studio herunterladen.
Doppelklicken Sie nach dem Herunterladen der Installationsdatei darauf und fahren Sie mit der Installation fort.
Schritt 8: Konfigurieren von AVD Manager
Um den AVD Manager zu konfigurieren, klicken Sie auf das entsprechende Symbol in der Menüleiste.
Schritt 9: Konfigurieren von AVD Manager
Wählen Sie eine Gerätedefinition, Nexus 5X wird empfohlen.
Klicken Sie auf die Schaltfläche Weiter. Daraufhin wird ein Systemabbildfenster angezeigt. Wähle ausx86 Images Tab.
Wählen Sie dann Marshmallow und klicken Sie auf Weiter.
Klicken Sie abschließend auf die Schaltfläche Fertig stellen, um die AVD-Konfiguration abzuschließen.
Nachdem Sie Ihr virtuelles Gerät konfiguriert haben, klicken Sie auf die Wiedergabetaste in der Spalte Aktionen, um Ihren Android-Emulator zu starten.
Schritt 10: Android ausführen
Öffnen Sie die Eingabeaufforderung, durchsuchen Sie Ihren Projektordner und führen Sie die aus react-native run-android Befehl.
Anschließend beginnt die Ausführung Ihrer App in einer weiteren Eingabeaufforderung, deren Status Sie sehen können.
In Ihrem Android-Emulator sehen Sie die Ausführung der Standard-App als -
Schritt 11: local.properties
Öffne das android Ordner in Ihrem Projektordner SampleReactNative/android(in diesem Fall). Erstellen Sie eine Datei mit dem Namenlocal.properties und fügen Sie den folgenden Pfad hinzu.
sdk.dir = /C:\\Users\\Tutorialspoint\\AppData\\Local\\Android\\Sdk
hier ersetzen Tutorialspoint mit Ihrem Benutzernamen.
Schritt 12: Hot Reloading
Und um eine Anwendung zu erstellen, ändern Sie die App.js und die Änderungen werden automatisch auf dem Android-Emulator aktualisiert.
Wenn nicht, klicken Sie auf den Android-Emulator und drücken Sie ctrl+m Wählen Sie dann Enable Hot Reloading Möglichkeit.
Wenn Sie die Standard-App öffnen, können Sie feststellen, dass die Datei app.js so aussieht
import React from 'react';
import { StyleSheet, Text, View } from 'react-native';
export default class App extends React.Component {
render() {
return (
<View style = {styles.container}>
<Text>Open up App.js to start working on your app!</Text>
<Text>Changes you make will automatically reload.</Text>
<Text>Shake your phone to open the developer menu.</Text>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#fff',
alignItems: 'center',
justifyContent: 'center',
},
});
Ausgabe
Hallo Welt
Um eine einfache Nachricht mit der Aufschrift "Willkommen bei Tutorialspoint" anzuzeigen, entfernen Sie den CSS-Teil und fügen Sie die zu druckende Nachricht mit den Tags <text> </ text> in <view> </ view> ein, wie unten gezeigt.
import React from 'react';
import { StyleSheet, Text, View } from 'react-native';
export default class App extends React.Component {
render() {
return (
<View>
<Text>Welcome to Tutorialspoint</Text>
</View>
);
}
}
Die Daten in React Components werden von verwaltet state und props. In diesem Kapitel werden wir darüber sprechenstate.
Unterschied zwischen Staat und Requisiten
Das state ist dabei veränderlich propssind unveränderlich. Dies bedeutet, dassstate kann in Zukunft aktualisiert werden, während Requisiten nicht aktualisiert werden können.
Status verwenden
Dies ist unsere Wurzelkomponente. Wir importieren nurHome Dies wird in den meisten Kapiteln verwendet.
App.js
import React from 'react';
import { StyleSheet, Text, View } from 'react-native';
export default class App extends React.Component {
state = {
myState: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, used do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
culpa qui officia deserunt mollit anim id est laborum.'
}
render() {
return (
<View>
<Text> {this.state.myState} </Text>
</View>
);
}
}
Wir können im Emulator Text aus dem Status wie im folgenden Screenshot sehen.
Status aktualisieren
Da state veränderbar ist, können wir ihn aktualisieren, indem wir den erstellen deleteState Funktion und rufen Sie es mit der onPress = {this.deleteText} Veranstaltung.
Home.js
import React, { Component } from 'react'
import { Text, View } from 'react-native'
class Home extends Component {
state = {
myState: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed
do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi
ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit
in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia
deserunt mollit anim id est laborum.'
}
updateState = () ⇒ this.setState({ myState: 'The state is updated' })
render() {
return (
<View>
<Text onPress = {this.updateState}>
{this.state.myState}
</Text>
</View>
);
}
}
export default Home;
NOTES- In allen Kapiteln verwenden wir die Klassensyntax für statusbehaftete (Container-) Komponenten und die Funktionssyntax für zustandslose (Präsentations-) Komponenten. Wir werden im nächsten Kapitel mehr über Komponenten erfahren.
Wir werden auch lernen, wie man die Pfeilfunktionssyntax für verwendet updateState. Beachten Sie, dass diese Syntax den lexikalischen Bereich und verwendetthisDas Schlüsselwort wird an das Umgebungsobjekt (Klasse) gebunden. Dies führt manchmal zu unerwartetem Verhalten.
Die andere Möglichkeit, Methoden zu definieren, besteht darin, die EC5-Funktionen zu verwenden. In diesem Fall müssen wir jedoch binden thismanuell im Konstruktor. Betrachten Sie das folgende Beispiel, um dies zu verstehen.
class Home extends Component {
constructor() {
super()
this.updateState = this.updateState.bind(this)
}
updateState() {
//
}
render() {
//
}
}
In unserem letzten Kapitel haben wir Ihnen gezeigt, wie Sie veränderlich verwenden state. In diesem Kapitel zeigen wir Ihnen, wie Sie den Status und den Status kombinierenprops.
Präsentationskomponenten sollten alle Daten durch Übergabe erhalten props. Nur Behälterkomponenten sollten habenstate.
Containerkomponente
Wir werden nun verstehen, was eine Containerkomponente ist und wie sie funktioniert.
Theorie
Jetzt werden wir unsere Containerkomponente aktualisieren. Diese Komponente behandelt den Status und übergibt die Requisiten an die Präsentationskomponente.
Die Containerkomponente wird nur für den Bearbeitungsstatus verwendet. Alle Funktionen in Bezug auf die Ansicht (Styling usw.) werden in der Präsentationskomponente behandelt.
Beispiel
Wenn wir ein Beispiel aus dem letzten Kapitel verwenden möchten, müssen wir das entfernen TextElement aus der Renderfunktion, da dieses Element zum Präsentieren von Text für die Benutzer verwendet wird. Dies sollte innerhalb der Präsentationskomponente liegen.
Lassen Sie uns den Code im folgenden Beispiel überprüfen. Wir werden die importierenPresentationalComponent und übergeben Sie es an die Renderfunktion.
Nachdem wir die importiert haben PresentationalComponentund übergeben Sie es an die Render-Funktion, müssen wir die Requisiten übergeben. Wir werden die Requisiten durch Hinzufügen übergebenmyText = {this.state.myText} und deleteText = {this.deleteText} zu <PresentationalComponent>. Jetzt können wir innerhalb der Präsentationskomponente darauf zugreifen.
App.js
import React from 'react';
import { StyleSheet, Text, View } from 'react-native';
import PresentationalComponent from './PresentationalComponent'
export default class App extends React.Component {
state = {
myState: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, used do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis
aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat
nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui
officia deserunt mollit anim id est laborum.'
}
updateState = () => {
this.setState({ myState: 'The state is updated' })
}
render() {
return (
<View>
<PresentationalComponent myState = {this.state.myState} updateState = {this.updateState}/>
</View>
);
}
}
Präsentationskomponente
Wir werden nun verstehen, was eine Präsentationskomponente ist und wie sie funktioniert.
Theorie
Präsentationskomponenten sollten nur zum Präsentieren der Ansicht für die Benutzer verwendet werden. Diese Komponenten haben keinen Status. Sie erhalten alle Daten und Funktionen als Requisiten.
Die beste Vorgehensweise besteht darin, so viele Präsentationskomponenten wie möglich zu verwenden.
Beispiel
Wie bereits in unserem vorherigen Kapitel erwähnt, verwenden wir die EC6-Funktionssyntax für Präsentationskomponenten.
Unsere Komponente erhält Requisiten, gibt Ansichtselemente zurück und präsentiert Text mit {props.myText} und rufen Sie die {props.deleteText} Funktion, wenn ein Benutzer auf den Text klickt.
PresentationalComponent.js
import React, { Component } from 'react'
import { Text, View } from 'react-native'
const PresentationalComponent = (props) => {
return (
<View>
<Text onPress = {props.updateState}>
{props.myState}
</Text>
</View>
)
}
export default PresentationalComponent
Jetzt haben wir die gleiche Funktionalität wie in unserem StateKapitel. Der einzige Unterschied besteht darin, dass wir unseren Code auf den Container und die Präsentationskomponente umgestaltet haben.
Sie können die App ausführen und den Text wie im folgenden Screenshot sehen.
Wenn Sie auf Text klicken, wird dieser vom Bildschirm entfernt.
Es gibt verschiedene Möglichkeiten, Ihre Elemente in React Native zu gestalten.
Du kannst den ... benutzen styleEigenschaft, um die Stile inline hinzuzufügen. Dies ist jedoch nicht die beste Vorgehensweise, da es schwierig sein kann, den Code zu lesen.
In diesem Kapitel werden wir die verwenden Stylesheet zum Stylen.
Containerkomponente
In diesem Abschnitt werden wir unsere Containerkomponente aus unserem vorherigen Kapitel vereinfachen.
App.js
import React from 'react';
import { StyleSheet, Text, View } from 'react-native';
import PresentationalComponent from './PresentationalComponent'
export default class App extends React.Component {
state = {
myState: 'This is my state'
}
render() {
return (
<View>
<PresentationalComponent myState = {this.state.myState}/>
</View>
);
}
}
Präsentationskomponente
Im folgenden Beispiel importieren wir die StyleSheet. Am Ende der Datei erstellen wir unser Stylesheet und weisen es dem zustylesKonstante. Beachten Sie, dass unsere Stile in sindcamelCase und wir verwenden nicht px oder% für das Styling.
Um Stile auf unseren Text anzuwenden, müssen wir hinzufügen style = {styles.myText} Eigentum an der Text Element.
PresentationalComponent.js
import React, { Component } from 'react'
import { Text, View, StyleSheet } from 'react-native'
const PresentationalComponent = (props) => {
return (
<View>
<Text style = {styles.myState}>
{props.myState}
</Text>
</View>
)
}
export default PresentationalComponent
const styles = StyleSheet.create ({
myState: {
marginTop: 20,
textAlign: 'center',
color: 'blue',
fontWeight: 'bold',
fontSize: 20
}
})
Wenn wir die App ausführen, erhalten wir die folgende Ausgabe.
React Native bietet verschiedene Bildschirmgrößen an Flexbox Unterstützung.
Wir werden den gleichen Code verwenden, den wir in unserem verwendet haben React Native - StylingKapitel. Wir werden nur das ändernPresentationalComponent.
Layout
Um das gewünschte Layout zu erreichen, bietet die Flexbox drei Haupteigenschaften: flexDirection justifyContent und alignItems.
Die folgende Tabelle zeigt die möglichen Optionen.
Eigentum | Werte | Beschreibung |
---|---|---|
flexDirection | 'Spaltenreihen' | Wird verwendet, um anzugeben, ob Elemente vertikal oder horizontal ausgerichtet werden. |
rechtfertige den Inhalt | "Mitte", "Flex-Start", "Flex-Ende", "Raum um", "Raum zwischen" | Wird verwendet, um zu bestimmen, wie Elemente im Container verteilt werden sollen. |
alignItems | "Mitte", "Flex-Start", "Flex-Ende", "gestreckt" | Wird verwendet, um zu bestimmen, wie Elemente innerhalb des Containers entlang der Sekundärachse verteilt werden sollen (gegenüber von flexDirection). |
Wenn Sie die Elemente vertikal ausrichten und zentralisieren möchten, können Sie den folgenden Code verwenden.
App.js
import React, { Component } from 'react'
import { View, StyleSheet } from 'react-native'
const Home = (props) => {
return (
<View style = {styles.container}>
<View style = {styles.redbox} />
<View style = {styles.bluebox} />
<View style = {styles.blackbox} />
</View>
)
}
export default Home
const styles = StyleSheet.create ({
container: {
flexDirection: 'column',
justifyContent: 'center',
alignItems: 'center',
backgroundColor: 'grey',
height: 600
},
redbox: {
width: 100,
height: 100,
backgroundColor: 'red'
},
bluebox: {
width: 100,
height: 100,
backgroundColor: 'blue'
},
blackbox: {
width: 100,
height: 100,
backgroundColor: 'black'
},
})
Output
Wenn die Elemente nach rechts verschoben werden müssen und Leerzeichen zwischen ihnen hinzugefügt werden müssen, können wir den folgenden Code verwenden.
App.js
import React, { Component } from 'react'
import { View, StyleSheet } from 'react-native'
const App = (props) => {
return (
<View style = {styles.container}>
<View style = {styles.redbox} />
<View style = {styles.bluebox} />
<View style = {styles.blackbox} />
</View>
)
}
export default App
const styles = StyleSheet.create ({
container: {
flexDirection: 'column',
justifyContent: 'space-between',
alignItems: 'flex-end',
backgroundColor: 'grey',
height: 600
},
redbox: {
width: 100,
height: 100,
backgroundColor: 'red'
},
bluebox: {
width: 100,
height: 100,
backgroundColor: 'blue'
},
blackbox: {
width: 100,
height: 100,
backgroundColor: 'black'
},
})
In diesem Kapitel zeigen wir Ihnen, wie Sie in React Native eine Liste erstellen. Wir werden importierenList in unserer Home Komponente und zeigen Sie es auf dem Bildschirm.
App.js
import React from 'react'
import List from './List.js'
const App = () => {
return (
<List />
)
}
export default App
Um eine Liste zu erstellen, verwenden wir die map()Methode. Dadurch wird ein Array von Elementen durchlaufen und jedes gerendert.
List.js
import React, { Component } from 'react'
import { Text, View, TouchableOpacity, StyleSheet } from 'react-native'
class List extends Component {
state = {
names: [
{
id: 0,
name: 'Ben',
},
{
id: 1,
name: 'Susan',
},
{
id: 2,
name: 'Robert',
},
{
id: 3,
name: 'Mary',
}
]
}
alertItemName = (item) => {
alert(item.name)
}
render() {
return (
<View>
{
this.state.names.map((item, index) => (
<TouchableOpacity
key = {item.id}
style = {styles.container}
onPress = {() => this.alertItemName(item)}>
<Text style = {styles.text}>
{item.name}
</Text>
</TouchableOpacity>
))
}
</View>
)
}
}
export default List
const styles = StyleSheet.create ({
container: {
padding: 10,
marginTop: 3,
backgroundColor: '#d9f9b1',
alignItems: 'center',
},
text: {
color: '#4f603c'
}
})
Wenn wir die App ausführen, wird die Liste der Namen angezeigt.
Sie können auf jedes Element in der Liste klicken, um eine Warnung mit dem Namen auszulösen.
In diesem Kapitel zeigen wir Ihnen, wie Sie damit arbeiten TextInput Elemente in React Native.
Die Home-Komponente importiert und rendert Eingaben.
App.js.
import React from 'react';
import Inputs from './inputs.js'
const App = () => {
return (
<Inputs />
)
}
export default App
Eingänge
Wir werden den Ausgangszustand definieren.
Nachdem wir den Ausgangszustand definiert haben, erstellen wir den handleEmail und die handlePasswordFunktionen. Diese Funktionen werden zum Aktualisieren des Status verwendet.
Das login() Die Funktion alarmiert nur den aktuellen Wert des Status.
Wir werden den Texteingaben auch einige andere Eigenschaften hinzufügen, um die automatische Großschreibung zu deaktivieren, den unteren Rand auf Android-Geräten zu entfernen und einen Platzhalter festzulegen.
inputs.js
import React, { Component } from 'react'
import { View, Text, TouchableOpacity, TextInput, StyleSheet } from 'react-native'
class Inputs extends Component {
state = {
email: '',
password: ''
}
handleEmail = (text) => {
this.setState({ email: text })
}
handlePassword = (text) => {
this.setState({ password: text })
}
login = (email, pass) => {
alert('email: ' + email + ' password: ' + pass)
}
render() {
return (
<View style = {styles.container}>
<TextInput style = {styles.input}
underlineColorAndroid = "transparent"
placeholder = "Email"
placeholderTextColor = "#9a73ef"
autoCapitalize = "none"
onChangeText = {this.handleEmail}/>
<TextInput style = {styles.input}
underlineColorAndroid = "transparent"
placeholder = "Password"
placeholderTextColor = "#9a73ef"
autoCapitalize = "none"
onChangeText = {this.handlePassword}/>
<TouchableOpacity
style = {styles.submitButton}
onPress = {
() => this.login(this.state.email, this.state.password)
}>
<Text style = {styles.submitButtonText}> Submit </Text>
</TouchableOpacity>
</View>
)
}
}
export default Inputs
const styles = StyleSheet.create({
container: {
paddingTop: 23
},
input: {
margin: 15,
height: 40,
borderColor: '#7a42f4',
borderWidth: 1
},
submitButton: {
backgroundColor: '#7a42f4',
padding: 10,
margin: 15,
height: 40,
},
submitButtonText:{
color: 'white'
}
})
Immer wenn wir eines der Eingabefelder eingeben, wird der Status aktualisiert. Wenn wir auf klickenSubmit Schaltfläche, Text von Eingaben wird im Dialogfeld angezeigt.
Immer wenn wir eines der Eingabefelder eingeben, wird der Status aktualisiert. Wenn wir auf klickenSubmit Schaltfläche, Text von Eingaben wird im Dialogfeld angezeigt.
In diesem Kapitel zeigen wir Ihnen, wie Sie mit dem arbeiten ScrollView Element.
Wir werden wieder schaffen ScrollViewExample.js und importieren Sie es in Home.
App.js.
import React from 'react';
import ScrollViewExample from './scroll_view.js';
const App = () => {
return (
<ScrollViewExample />
)
}export default App
Scrollview rendert eine Liste mit Namen. Wir werden es in Zustand schaffen.
ScrollView.js
import React, { Component } from 'react';
import { Text, Image, View, StyleSheet, ScrollView } from 'react-native';
class ScrollViewExample extends Component {
state = {
names: [
{'name': 'Ben', 'id': 1},
{'name': 'Susan', 'id': 2},
{'name': 'Robert', 'id': 3},
{'name': 'Mary', 'id': 4},
{'name': 'Daniel', 'id': 5},
{'name': 'Laura', 'id': 6},
{'name': 'John', 'id': 7},
{'name': 'Debra', 'id': 8},
{'name': 'Aron', 'id': 9},
{'name': 'Ann', 'id': 10},
{'name': 'Steve', 'id': 11},
{'name': 'Olivia', 'id': 12}
]
}
render() {
return (
<View>
<ScrollView>
{
this.state.names.map((item, index) => (
<View key = {item.id} style = {styles.item}>
<Text>{item.name}</Text>
</View>
))
}
</ScrollView>
</View>
)
}
}
export default ScrollViewExample
const styles = StyleSheet.create ({
item: {
flexDirection: 'row',
justifyContent: 'space-between',
alignItems: 'center',
padding: 30,
margin: 2,
borderColor: '#2a4944',
borderWidth: 1,
backgroundColor: '#d2f7f1'
}
})
Wenn wir die App ausführen, wird die scrollbare Liste der Namen angezeigt.
In diesem Kapitel erfahren Sie, wie Sie mit Bildern in React Native arbeiten.
Bild hinzufügen
Lassen Sie uns einen neuen Ordner erstellen img in der srcMappe. Wir werden unser Bild hinzufügen (myImage.png) in diesem Ordner.
Wir werden Bilder auf dem Startbildschirm anzeigen.
App.js.
import React from 'react';
import ImagesExample from './ImagesExample.js'
const App = () => {
return (
<ImagesExample />
)
}
export default App
Auf das lokale Bild kann mit der folgenden Syntax zugegriffen werden.
image_example.js
import React, { Component } from 'react'
import { Image } from 'react-native'
const ImagesExample = () => (
<Image source = {require('C:/Users/Tutorialspoint/Desktop/NativeReactSample/logo.png')} />
)
export default ImagesExample
Ausgabe
Bildschirmdichte
React Native bietet eine Möglichkeit, Bilder für verschiedene Geräte zu optimieren @2x, @3xSuffix. Die App lädt nur das Bild, das für eine bestimmte Bildschirmdichte erforderlich ist.
Das Folgende sind die Namen des Bildes innerhalb der img Mappe.
[email protected]
[email protected]
Netzwerkbilder
Bei Verwendung von Netzwerkabbildern anstelle von require, wir brauchen die sourceEigentum. Es wird empfohlen, die zu definierenwidth und die height für Netzwerkbilder.
App.js.
import React from 'react';
import ImagesExample from './image_example.js'
const App = () => {
return (
<ImagesExample />
)
}
export default App
image_example.js
import React, { Component } from 'react'
import { View, Image } from 'react-native'
const ImagesExample = () => (
<Image source = {{uri:'https://pbs.twimg.com/profile_images/486929358120964097/gNLINY67_400x400.png'}}
style = {{ width: 200, height: 200 }}
/>
)
export default ImagesExample
Ausgabe
In diesem Kapitel zeigen wir Ihnen die Verwendung fetch zur Bearbeitung von Netzwerkanforderungen.
App.js.
import React from 'react';
import HttpExample from './http_example.js'
const App = () => {
return (
<HttpExample />
)
}
export default App
Verwenden von Fetch
Wir werden die verwenden componentDidMountLebenszyklusmethode zum Laden der Daten vom Server, sobald die Komponente bereitgestellt ist. Diese Funktion sendet eine GET-Anforderung an den Server, gibt JSON-Daten zurück, protokolliert die Ausgabe an die Konsole und aktualisiert unseren Status.
http_example.js
import React, { Component } from 'react'
import { View, Text } from 'react-native'
class HttpExample extends Component {
state = {
data: ''
}
componentDidMount = () => {
fetch('https://jsonplaceholder.typicode.com/posts/1', {
method: 'GET'
})
.then((response) => response.json())
.then((responseJson) => {
console.log(responseJson);
this.setState({
data: responseJson
})
})
.catch((error) => {
console.error(error);
});
}
render() {
return (
<View>
<Text>
{this.state.data.body}
</Text>
</View>
)
}
}
export default HttpExample
Ausgabe
In diesem Kapitel zeigen wir Ihnen berührbare Komponenten in React Native. Wir nennen sie "berührbar", weil sie eingebaute Animationen bieten und wir die verwenden könnenonPress Requisite für die Handhabung von Berührungsereignissen.
Facebook bietet die ButtonKomponente, die als generische Schaltfläche verwendet werden kann. Betrachten Sie das folgende Beispiel, um dasselbe zu verstehen.
App.js.
import React, { Component } from 'react'
import { Button } from 'react-native'
const App = () => {
const handlePress = () => false
return (
<Button
onPress = {handlePress}
title = "Red button!"
color = "red"
/>
)
}
export default App
Wenn die Standardeinstellung Button Komponente entspricht nicht Ihren Anforderungen, Sie können stattdessen eine der folgenden Komponenten verwenden.
Berührbare Deckkraft
Dieses Element ändert die Deckkraft eines Elements, wenn es berührt wird.
App.js.
import React from 'react'
import { TouchableOpacity, StyleSheet, View, Text } from 'react-native'
const App = () => {
return (
<View style = {styles.container}>
<TouchableOpacity>
<Text style = {styles.text}>
Button
</Text>
</TouchableOpacity>
</View>
)
}
export default App
const styles = StyleSheet.create ({
container: {
alignItems: 'center',
},
text: {
borderWidth: 1,
padding: 25,
borderColor: 'black',
backgroundColor: 'red'
}
})
Berührbares Highlight
Wenn ein Benutzer auf das Element drückt, wird es dunkler und die zugrunde liegende Farbe wird durchscheinen.
App.js.
import React from 'react'
import { View, TouchableHighlight, Text, StyleSheet } from 'react-native'
const App = (props) => {
return (
<View style = {styles.container}>
<TouchableHighlight>
<Text style = {styles.text}>
Button
</Text>
</TouchableHighlight>
</View>
)
}
export default App
const styles = StyleSheet.create ({
container: {
alignItems: 'center',
},
text: {
borderWidth: 1,
padding: 25,
borderColor: 'black',
backgroundColor: 'red'
}
})
Berührbares natives Feedback
Dadurch wird eine Tintenanimation simuliert, wenn das Element gedrückt wird.
App.js.
import React from 'react'
import { View, TouchableNativeFeedback, Text, StyleSheet } from 'react-native'
const Home = (props) => {
return (
<View style = {styles.container}>
<TouchableNativeFeedback>
<Text style = {styles.text}>
Button
</Text>
</TouchableNativeFeedback>
</View>
)
}
export default Home
const styles = StyleSheet.create ({
container: {
alignItems: 'center',
},
text: {
borderWidth: 1,
padding: 25,
borderColor: 'black',
backgroundColor: 'red'
}
})
Ohne Rückmeldung berührbar
Dies sollte verwendet werden, wenn Sie das Berührungsereignis ohne Animation behandeln möchten. Normalerweise wird diese Komponente nicht häufig verwendet.
<TouchableWithoutFeedback>
<Text>
Button
</Text>
</TouchableWithoutFeedback>
In diesem Kapitel zeigen wir Ihnen die Verwendung LayoutAnimation in React Native.
Animationskomponente
Wir werden setzen myStyleals Eigentum des Staates. Diese Eigenschaft wird zum Stylen eines Elements im Inneren verwendetPresentationalAnimationComponent.
Wir werden auch zwei Funktionen erstellen - expandElement und collapseElement. Diese Funktionen aktualisieren Werte aus dem Status. Der erste wird die verwendenspring voreingestellte Animation, während die zweite die hat linearvoreingestellt. Wir werden diese auch als Requisiten übergeben. DasExpand und die Collapse Tasten rufen die expandElement() und collapseElement() Funktionen.
In diesem Beispiel ändern wir dynamisch die Breite und Höhe des Felds. Seit derHome Komponente wird die gleiche sein, wir werden nur die ändern Animations Komponente.
App.js.
import React, { Component } from 'react'
import { View, StyleSheet, Animated, TouchableOpacity } from 'react-native'
class Animations extends Component {
componentWillMount = () => {
this.animatedWidth = new Animated.Value(50)
this.animatedHeight = new Animated.Value(100)
}
animatedBox = () => {
Animated.timing(this.animatedWidth, {
toValue: 200,
duration: 1000
}).start()
Animated.timing(this.animatedHeight, {
toValue: 500,
duration: 500
}).start()
}
render() {
const animatedStyle = { width: this.animatedWidth, height: this.animatedHeight }
return (
<TouchableOpacity style = {styles.container} onPress = {this.animatedBox}>
<Animated.View style = {[styles.box, animatedStyle]}/>
</TouchableOpacity>
)
}
}
export default Animations
const styles = StyleSheet.create({
container: {
justifyContent: 'center',
alignItems: 'center'
},
box: {
backgroundColor: 'blue',
width: 50,
height: 100
}
})
React native bietet eine Reihe von Methoden, die beim Debuggen Ihres Codes helfen.
Im App-Entwickler-Menü
Sie können das Entwicklermenü im IOS-Simulator durch Drücken von öffnen command + D.
Auf dem Android-Emulator müssen Sie drücken command + M.
Reload- Wird zum Nachladen des Simulators verwendet. Sie können eine Verknüpfung verwendencommand + R
Debug JS Remotely - Wird zum Aktivieren des Debuggens in der Browser-Entwicklerkonsole verwendet.
Enable Live Reload- Wird verwendet, um das Live-Neuladen zu aktivieren, wenn Ihr Code gespeichert wird. Der Debugger wird um geöffnetlocalhost:8081/debugger-ui.
Start Systrace - Wird zum Starten des auf Android-Markern basierenden Profiling-Tools verwendet.
Show Inspector- Wird zum Öffnen des Inspektors verwendet, wo Sie Informationen zu Ihren Komponenten finden. Sie können eine Verknüpfung verwendencommand + I
Show Perf Monitor - Mit dem Perf-Monitor können Sie die Leistung Ihrer App verfolgen.
In diesem Kapitel werden wir die Navigation in React Native verstehen.
Schritt 1: Installieren Sie den Router
Zunächst müssen wir das installieren Router. In diesem Kapitel wird der React Native Router Flux verwendet. Sie können den folgenden Befehl im Terminal im Projektordner ausführen.
npm i react-native-router-flux --save
Schritt 2: Gesamte Bewerbung
Da unser Router die gesamte Anwendung verarbeiten soll, fügen wir sie hinzu index.ios.js. Für Android können Sie dasselbe in tunindex.android.js.
App.js.
import React, { Component } from 'react';
import { AppRegistry, View } from 'react-native';
import Routes from './Routes.js'
class reactTutorialApp extends Component {
render() {
return (
<Routes />
)
}
}
export default reactTutorialApp
AppRegistry.registerComponent('reactTutorialApp', () => reactTutorialApp)
Schritt 3: Router hinzufügen
Jetzt werden wir die erstellen RoutesKomponente im Komponentenordner. Es wird zurückkehrenRoutermit mehreren Szenen. Jede Szene wird brauchenkey, component und title. Der Router verwendet die Schlüsseleigenschaft, um zwischen Szenen zu wechseln. Die Komponente wird auf dem Bildschirm gerendert und der Titel wird in der Navigationsleiste angezeigt. Wir können das auch einstelleninitial Eigenschaft für die Szene, die anfänglich gerendert werden soll.
Routes.js
import React from 'react'
import { Router, Scene } from 'react-native-router-flux'
import Home from './Home.js'
import About from './About.js'
const Routes = () => (
<Router>
<Scene key = "root">
<Scene key = "home" component = {Home} title = "Home" initial = {true} />
<Scene key = "about" component = {About} title = "About" />
</Scene>
</Router>
)
export default Routes
Schritt 4: Komponenten erstellen
Wir haben bereits die HomeKomponente aus früheren Kapiteln; Jetzt müssen wir das hinzufügenAboutKomponente. Wir werden das hinzufügengoToAbout und die goToHome Funktionen zum Umschalten zwischen Szenen.
Home.js
import React from 'react'
import { TouchableOpacity, Text } from 'react-native';
import { Actions } from 'react-native-router-flux';
const Home = () => {
const goToAbout = () => {
Actions.about()
}
return (
<TouchableOpacity style = {{ margin: 128 }} onPress = {goToAbout}>
<Text>This is HOME!</Text>
</TouchableOpacity>
)
}
export default Home
About.js
import React from 'react'
import { TouchableOpacity, Text } from 'react-native'
import { Actions } from 'react-native-router-flux'
const About = () => {
const goToHome = () => {
Actions.home()
}
return (
<TouchableOpacity style = {{ margin: 128 }} onPress = {goToHome}>
<Text>This is ABOUT</Text>
</TouchableOpacity>
)
}
export default About
Die App rendert die Initiale Home Bildschirm.
Sie können die Taste drücken, um zum Info-Bildschirm zu wechseln. Der Zurück-Pfeil wird angezeigt. Sie können es verwenden, um zum vorherigen Bildschirm zurückzukehren.
Wenn Sie Ihre App im IOS-Simulator testen möchten, müssen Sie lediglich den Stammordner Ihrer App im Terminal öffnen und ausführen -
react-native run-ios
Mit dem obigen Befehl wird der Simulator gestartet und die App ausgeführt.
Wir können auch das Gerät angeben, das wir verwenden möchten.
react-native run-ios --simulator "iPhone 5s
Nachdem Sie die App im Simulator geöffnet haben, können Sie drücken command + Dauf IOS, um das Entwicklermenü zu öffnen. Mehr dazu erfahren Sie in unseremdebugging Kapitel.
Sie können den IOS-Simulator auch durch Drücken von neu laden command + R.
Wir können die React Native-App auf der Android-Plattform ausführen, indem wir den folgenden Code im Terminal ausführen.
react-native run-android
Bevor Sie Ihre App auf einem Android-Gerät ausführen können, müssen Sie sie aktivieren USB Debugging in der Developer Options.
Wann USB Debugging Wenn diese Option aktiviert ist, können Sie Ihr Gerät anschließen und das oben angegebene Code-Snippet ausführen.
Der native Android-Emulator ist langsam. Wir empfehlen, Genymotion herunterzuladen, um Ihre App zu testen.
Das Entwicklermenü kann durch Drücken von aufgerufen werden command + M.
Ansicht ist das häufigste Element in React Native. Sie können es als ein Äquivalent der betrachtendiv Element in der Webentwicklung verwendet.
Anwendungsfälle
Lassen Sie uns nun einige häufige Anwendungsfälle sehen.
Wenn Sie Ihre Elemente in den Container einwickeln müssen, können Sie verwenden View als Containerelement.
Wenn Sie mehr Elemente im übergeordneten Element verschachteln möchten, können sowohl übergeordnete als auch untergeordnete Elemente vorhanden sein View. Es kann so viele Kinder haben, wie Sie wollen.
Wenn Sie verschiedene Elemente stylen möchten, können Sie sie darin platzieren View da es unterstützt style Eigentum, flexbox usw.
View unterstützt auch synthetische Berührungsereignisse, die für verschiedene Zwecke nützlich sein können.
Wir haben schon benutzt Viewin unseren vorherigen Kapiteln und wir werden es auch in fast allen nachfolgenden Kapiteln verwenden. DasViewkann als Standardelement in React Native angenommen werden. Im folgenden Beispiel verschachteln wir zwei Ansichten und einen Text.
App.js.
import React, { Component } from 'react'
import { View, Text } from 'react-native'
const App = () => {
return (
<View>
<View>
<Text>This is my text</Text>
</View>
</View>
)
}
export default App
Ausgabe
In diesem Kapitel erfahren Sie, wie Sie WebView verwenden. Es wird verwendet, wenn Sie eine Webseite inline für Ihre mobile App rendern möchten.
Verwenden von WebView
Das HomeContainer wird eine Containerkomponente sein.
App.js.
import React, { Component } from 'react'
import WebViewExample from './web_view_example.js'
const App = () => {
return (
<WebViewExample/>
)
}
export default App;
Lassen Sie uns eine neue Datei namens erstellen WebViewExample.js in der src/components/home Mappe.
web_view_example.js
import React, { Component } from 'react'
import { View, WebView, StyleSheet }
from 'react-native'
const WebViewExample = () => {
return (
<View style = {styles.container}>
<WebView
source = {{ uri:
'https://www.google.com/?gws_rd=cr,ssl&ei=SICcV9_EFqqk6ASA3ZaABA#q=tutorialspoint' }}
/>
</View>
)
}
export default WebViewExample;
const styles = StyleSheet.create({
container: {
height: 350,
}
})
Das obige Programm erzeugt die folgende Ausgabe.
In diesem Kapitel zeigen wir Ihnen, wie Sie die modale Komponente in React Native verwenden.
Lassen Sie uns jetzt eine neue Datei erstellen: ModalExample.js
Wir werden Logik hineinstecken ModalExample. Wir können den Ausgangszustand aktualisieren, indem wir das ausführentoggleModal.
Nach dem Aktualisieren des Ausgangszustands durch Ausführen von toggleModalwerden wir das einstellen visibleEigentum an unserem Modal. Diese Requisite wird aktualisiert, wenn sich der Status ändert.
Das onRequestClose wird für Android-Geräte benötigt.
App.js.
import React, { Component } from 'react'
import WebViewExample from './modal_example.js'
const Home = () => {
return (
<WebViewExample/>
)
}
export default Home;
modal_example.js
import React, { Component } from 'react';
import { Modal, Text, TouchableHighlight, View, StyleSheet}
from 'react-native'
class ModalExample extends Component {
state = {
modalVisible: false,
}
toggleModal(visible) {
this.setState({ modalVisible: visible });
}
render() {
return (
<View style = {styles.container}>
<Modal animationType = {"slide"} transparent = {false}
visible = {this.state.modalVisible}
onRequestClose = {() => { console.log("Modal has been closed.") } }>
<View style = {styles.modal}>
<Text style = {styles.text}>Modal is open!</Text>
<TouchableHighlight onPress = {() => {
this.toggleModal(!this.state.modalVisible)}}>
<Text style = {styles.text}>Close Modal</Text>
</TouchableHighlight>
</View>
</Modal>
<TouchableHighlight onPress = {() => {this.toggleModal(true)}}>
<Text style = {styles.text}>Open Modal</Text>
</TouchableHighlight>
</View>
)
}
}
export default ModalExample
const styles = StyleSheet.create ({
container: {
alignItems: 'center',
backgroundColor: '#ede3f2',
padding: 100
},
modal: {
flex: 1,
alignItems: 'center',
backgroundColor: '#f7021a',
padding: 100
},
text: {
color: '#3f2949',
marginTop: 10
}
})
Unser Startbildschirm wird so aussehen -
Wenn wir auf die Schaltfläche klicken, wird das Modal geöffnet.
In diesem Kapitel zeigen wir Ihnen, wie Sie den Aktivitätsindikator in React Native verwenden.
Schritt 1: App
App Komponente wird verwendet, um unsere zu importieren und anzuzeigen ActivityIndicator.
App.js.
import React from 'react'
import ActivityIndicatorExample from './activity_indicator_example.js'
const Home = () => {
return (
<ActivityIndicatorExample />
)
}
export default Home
Schritt 2: ActivityIndicatorExample
Die Animationseigenschaft ist ein Boolescher Wert, der zum Anzeigen des Aktivitätsindikators verwendet wird. Letzterer schließt sechs Sekunden nach der Montage der Komponente. Dies geschieht mit demcloseActivityIndicator() Funktion.
activity_indicator_example.js
import React, { Component } from 'react';
import { ActivityIndicator, View, Text, TouchableOpacity, StyleSheet } from 'react-native';
class ActivityIndicatorExample extends Component {
state = { animating: true }
closeActivityIndicator = () => setTimeout(() => this.setState({
animating: false }), 60000)
componentDidMount = () => this.closeActivityIndicator()
render() {
const animating = this.state.animating
return (
<View style = {styles.container}>
<ActivityIndicator
animating = {animating}
color = '#bc2b78'
size = "large"
style = {styles.activityIndicator}/>
</View>
)
}
}
export default ActivityIndicatorExample
const styles = StyleSheet.create ({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
marginTop: 70
},
activityIndicator: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
height: 80
}
})
Wenn wir die App ausführen, wird der Loader auf dem Bildschirm angezeigt. Es verschwindet nach sechs Sekunden.
In diesem Kapitel erstellen wir eine einfache Auswahl mit zwei verfügbaren Optionen.
Schritt 1: Datei erstellen
Hier das App.js Ordner wird als Präsentationskomponente verwendet.
App.js.
import React from 'react'
import PickerExample from './PickerExample.js'
const App = () => {
return (
<PickerExample />
)
}
export default App
Schritt 2: Logik
this.state.user wird zur Kommissioniersteuerung verwendet.
Das updateUser Die Funktion wird ausgelöst, wenn ein Benutzer ausgewählt wird.
PickerExample.js
import React, { Component } from 'react';
import { View, Text, Picker, StyleSheet } from 'react-native'
class PickerExample extends Component {
state = {user: ''}
updateUser = (user) => {
this.setState({ user: user })
}
render() {
return (
<View>
<Picker selectedValue = {this.state.user} onValueChange = {this.updateUser}>
<Picker.Item label = "Steve" value = "steve" />
<Picker.Item label = "Ellen" value = "ellen" />
<Picker.Item label = "Maria" value = "maria" />
</Picker>
<Text style = {styles.text}>{this.state.user}</Text>
</View>
)
}
}
export default PickerExample
const styles = StyleSheet.create({
text: {
fontSize: 30,
alignSelf: 'center',
color: 'red'
}
})
Ausgabe
Wenn Sie auf den Namen klicken, werden alle drei Optionen wie folgt angezeigt:
Und Sie können eine davon auswählen und die Ausgabe wird wie folgt sein.
In diesem Kapitel zeigen wir Ihnen, wie Sie das Erscheinungsbild der Statusleiste in React Native steuern.
Die Statusleiste ist einfach zu bedienen und Sie müssen lediglich Eigenschaften festlegen, um sie zu ändern.
Das hiddenMit der Eigenschaft kann die Statusleiste ausgeblendet werden. In unserem Beispiel ist es auf gesetztfalse. Dies ist der Standardwert.
Das barStyle kann drei Werte haben - dark-content, light-content und default.
Diese Komponente verfügt über mehrere andere Eigenschaften, die verwendet werden können. Einige von ihnen sind Android- oder IOS-spezifisch. Sie können es in der offiziellen Dokumentation überprüfen.
App.js.
import React, { Component } from 'react';
import { StatusBar } from 'react-native'
const App = () => {
return (
<StatusBar barStyle = "dark-content" hidden = {false} backgroundColor = "#00BCD4" translucent = {true}/>
)
}
export default App
Wenn wir die App ausführen, wird die Statusleiste angezeigt und der Inhalt hat eine dunkle Farbe.
Ausgabe
In diesem Kapitel werden wir das erklären Switch Komponente in wenigen Schritten.
Schritt 1: Datei erstellen
Wir werden die verwenden HomeContainer Komponente für Logik, aber wir müssen die Präsentationskomponente erstellen.
Lassen Sie uns jetzt eine neue Datei erstellen: SwitchExample.js.
Schritt 2: Logik
Wir geben Wert aus dem state und Funktionen zum Umschalten von Schalterelementen auf SwitchExampleKomponente. Umschaltfunktionen werden zum Aktualisieren des Status verwendet.
App.js.
import React, { Component } from 'react'
import { View } from 'react-native'
import SwitchExample from './switch_example.js'
export default class HomeContainer extends Component {
constructor() {
super();
this.state = {
switch1Value: false,
}
}
toggleSwitch1 = (value) => {
this.setState({switch1Value: value})
console.log('Switch 1 is: ' + value)
}
render() {
return (
<View>
<SwitchExample
toggleSwitch1 = {this.toggleSwitch1}
switch1Value = {this.state.switch1Value}/>
</View>
);
}
}
Schritt 3: Präsentation
Die Switch-Komponente benötigt zwei Requisiten. DasonValueChangeprop löst unsere Umschaltfunktionen aus, nachdem ein Benutzer den Schalter gedrückt hat. Dasvalue Stütze ist an den Zustand der gebunden HomeContainer Komponente.
switch_example.js
import React, { Component } from 'react'
import { View, Switch, StyleSheet }
from 'react-native'
export default SwitchExample = (props) => {
return (
<View style = {styles.container}>
<Switch
onValueChange = {props.toggleSwitch1}
value = {props.switch1Value}/>
</View>
)
}
const styles = StyleSheet.create ({
container: {
flex: 1,
alignItems: 'center',
marginTop: 100
}
})
Wenn wir den Schalter drücken, wird der Status aktualisiert. Sie können Werte in der Konsole überprüfen.
Ausgabe
In diesem Kapitel werden wir darüber sprechen Text Komponente in React Native.
Diese Komponente kann verschachtelt sein und Eigenschaften von übergeordnet zu untergeordnet erben. Dies kann in vielerlei Hinsicht nützlich sein. Wir zeigen Ihnen ein Beispiel für die Großschreibung des ersten Buchstabens, das Stylen von Wörtern oder Textteilen usw.
Schritt 1: Datei erstellen
Die Datei, die wir erstellen werden, ist text_example.js
Schritt 2: App.js.
In diesem Schritt erstellen wir einfach einen einfachen Container.
App.js.
import React, { Component } from 'react'
import TextExample from './text_example.js'
const App = () => {
return (
<TextExample/>
)
}
export default App
Schritt 3: Text
In diesem Schritt verwenden wir das Vererbungsmuster. styles.text wird auf alle angewendet Text Komponenten.
Sie können auch feststellen, wie wir für einige Textteile andere Stileigenschaften festlegen. Es ist wichtig zu wissen, dass allen untergeordneten Elementen übergeordnete Stile übergeben werden.
text_example.js
import React, { Component } from 'react';
import { View, Text, Image, StyleSheet } from 'react-native'
const TextExample = () => {
return (
<View style = {styles.container}>
<Text style = {styles.text}>
<Text style = {styles.capitalLetter}>
L
</Text>
<Text>
orem ipsum dolor sit amet, sed do eiusmod.
</Text>
<Text>
Ut enim ad <Text style = {styles.wordBold}>minim </Text> veniam,
quis aliquip ex ea commodo consequat.
</Text>
<Text style = {styles.italicText}>
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum.
</Text>
<Text style = {styles.textShadow}>
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia
deserunt mollit anim id est laborum.
</Text>
</Text>
</View>
)
}
export default TextExample
const styles = StyleSheet.create ({
container: {
alignItems: 'center',
marginTop: 100,
padding: 20
},
text: {
color: '#41cdf4',
},
capitalLetter: {
color: 'red',
fontSize: 20
},
wordBold: {
fontWeight: 'bold',
color: 'black'
},
italicText: {
color: '#37859b',
fontStyle: 'italic'
},
textShadow: {
textShadowColor: 'red',
textShadowOffset: { width: 2, height: 2 },
textShadowRadius : 5
}
})
Sie erhalten folgende Ausgabe:
In diesem Kapitel erfahren Sie, wie Sie benutzerdefinierte Elemente erstellen Alert Komponente.
Schritt 1: App.js.
import React from 'react'
import AlertExample from './alert_example.js'
const App = () => {
return (
<AlertExample />
)
}
export default App
Schritt 2: alert_example.js
Wir werden eine Schaltfläche zum Auslösen des erstellen showAlert Funktion.
import React from 'react'
import { Alert, Text, TouchableOpacity, StyleSheet } from 'react-native'
const AlertExample = () => {
const showAlert = () =>{
Alert.alert(
'You need to...'
)
}
return (
<TouchableOpacity onPress = {showAlert} style = {styles.button}>
<Text>Alert</Text>
</TouchableOpacity>
)
}
export default AlertExample
const styles = StyleSheet.create ({
button: {
backgroundColor: '#4ba37b',
width: 100,
borderRadius: 50,
alignItems: 'center',
marginTop: 100
}
})
Ausgabe
Wenn Sie auf die Schaltfläche klicken, sehen Sie Folgendes:
In diesem Kapitel zeigen wir Ihnen die Verwendung Geolocation.
Schritt 1: App.js.
import React from 'react'
import GeolocationExample from './geolocation_example.js'
const App = () => {
return (
<GeolocationExample />
)
}
export default App
Schritt 2: Geolokalisierung
Wir beginnen mit dem Einrichten des Anfangszustands, der die Anfangs- und die letzte Position enthält.
Jetzt müssen wir die aktuelle Position des Geräts abrufen, wenn eine Komponente mit dem montiert wird navigator.geolocation.getCurrentPosition. Wir werden die Antwort stringifizieren, damit wir den Status aktualisieren können.
navigator.geolocation.watchPositionwird zum Verfolgen der Position des Benutzers verwendet. In diesem Schritt löschen wir auch die Beobachter.
AsyncStorageExample.js
import React, { Component } from 'react'
import { View, Text, Switch, StyleSheet} from 'react-native'
class SwichExample extends Component {
state = {
initialPosition: 'unknown',
lastPosition: 'unknown',
}
watchID: ?number = null;
componentDidMount = () => {
navigator.geolocation.getCurrentPosition(
(position) => {
const initialPosition = JSON.stringify(position);
this.setState({ initialPosition });
},
(error) => alert(error.message),
{ enableHighAccuracy: true, timeout: 20000, maximumAge: 1000 }
);
this.watchID = navigator.geolocation.watchPosition((position) => {
const lastPosition = JSON.stringify(position);
this.setState({ lastPosition });
});
}
componentWillUnmount = () => {
navigator.geolocation.clearWatch(this.watchID);
}
render() {
return (
<View style = {styles.container}>
<Text style = {styles.boldText}>
Initial position:
</Text>
<Text>
{this.state.initialPosition}
</Text>
<Text style = {styles.boldText}>
Current position:
</Text>
<Text>
{this.state.lastPosition}
</Text>
</View>
)
}
}
export default SwichExample
const styles = StyleSheet.create ({
container: {
flex: 1,
alignItems: 'center',
marginTop: 50
},
boldText: {
fontSize: 30,
color: 'red',
}
})
In diesem Kapitel zeigen wir Ihnen, wie Sie Ihre Daten mit beibehalten können AsyncStorage.
Schritt 1: Präsentation
In diesem Schritt erstellen wir die App.js Datei.
import React from 'react'
import AsyncStorageExample from './async_storage_example.js'
const App = () => {
return (
<AsyncStorageExample />
)
}
export default App
Schritt 2: Logik
Namevom Ausgangszustand ist leere Zeichenfolge. Wir werden es aus dem persistenten Speicher aktualisieren, wenn die Komponente bereitgestellt wird.
setName nimmt den Text aus unserem Eingabefeld und speichert ihn mit AsyncStorage und aktualisieren Sie den Status.
async_storage_example.js
import React, { Component } from 'react'
import { StatusBar } from 'react-native'
import { AsyncStorage, Text, View, TextInput, StyleSheet } from 'react-native'
class AsyncStorageExample extends Component {
state = {
'name': ''
}
componentDidMount = () => AsyncStorage.getItem('name').then((value) => this.setState({ 'name': value }))
setName = (value) => {
AsyncStorage.setItem('name', value);
this.setState({ 'name': value });
}
render() {
return (
<View style = {styles.container}>
<TextInput style = {styles.textInput} autoCapitalize = 'none'
onChangeText = {this.setName}/>
<Text>
{this.state.name}
</Text>
</View>
)
}
}
export default AsyncStorageExample
const styles = StyleSheet.create ({
container: {
flex: 1,
alignItems: 'center',
marginTop: 50
},
textInput: {
margin: 5,
height: 100,
borderWidth: 1,
backgroundColor: '#7685ed'
}
})
Wenn wir die App ausführen, können wir den Text aktualisieren, indem wir in das Eingabefeld eingeben.