Dieses Mal werde ich Ihnen zeigen, was Sie im tatsächlichen Kampf der React Navigation beachten sollten. Schauen wir uns das Folgende an.
1. NavigationsleisteBei der Verwendung der Navigationsleiste treten die folgenden Probleme auf
1 Unten befindet sich eine schwarze LinieSie soll eine Seite erstellen, bei der die Farbe des Balkens mit der Farbe der Seite übereinstimmt. Nur wenn oben noch zwei weitere Knöpfe vorhanden sind. Am unteren Rand der Leiste wurde eine schwarze Linie gefunden. Dadurch kann die Leiste den gewünschten Seiteneffekt nicht gut erreichen. Nachdem Sie den Code in der Kopfzeile festgelegt haben, können Sie
static navigationOptions = { ... headerStyle: { ... borderBottomWidth: 0, }, }
Navigationsleiste reagieren In Android gibt es standardmäßig eine Höhe. Der visuelle Effekt besteht darin, dass unten ein Schatten entsteht. Ein weiterer störender Effekt entsteht, wenn eine benutzerdefinierte Leiste mit einem Hintergrundbild verwendet wird. Sie werden feststellen, dass das Hintergrundbild den Effekt einer unvollständigen Abdeckung hat. Es gibt immer eine Lücke an den Seiten. Dieses Problem tritt unter iOS nicht auf. Dieses Problem kann gelöst werden, indem das Höhenattribut auf Null gesetzt wird
static navigationOptions = { ... headerStyle: { ... elevation: 0, }, }
3. Das Problem der Zentrierung des Balkentitels in Android
In Android der Titel der Leiste ist linkszentriert. iOS ist standardmäßig zentriert. Sie können die folgende Schreibmethode verwenden, um
static navigationOptions = { ... headerTitleStyle: { //此属性是标题的Style属性。可以接受<Text>标签的style ... alignSelf: "center", }, }
static navigationOptions = { ... headerRight: <View /> }
4. Die Navigationsleiste mit Hintergrundbild
unterscheidet sich von Yuansheng. In der Reaktionsnavigationsleiste gibt es kein Hintergrundbildattribut. Mit anderen Worten: Wenn wir die Navigationsleiste mit einem Hintergrundbild verwenden möchten, müssen wir eine benutzerdefinierte Ansicht verwenden.
import {Header} from "react-navigation"; //header 需导入 const ImageHeader = props => ( <View> <Image style={{position: "absolute", zIndex: -1, width: "100%", height: "100%", resizeMode: "cover"}} source={require(...)} /> <Header {...props} style={{backgroundColor: "transparent"}} /> </View> ); static navigationOptions = { ... headerStyle: { //背景颜色必须为透明,不然无法透出底部图片 backgroundColor: "transparent", //安卓中不添加此属性会导致背景图无法铺满 elevation: 0, }, header: props => { return <ImageHeader {...props} />; }, }
5. Gestenkonfliktproblem, wenn StackNavigator und DrawerNavigator verschachtelt sind
Wenn DrawerNavigator in StackNavigator verschachtelt ist. Nach dem Aufrufen der sekundären Schnittstelle von StackNav steht die Zurück-Geste im Konflikt mit dem Öffnen des DrawerNav-Menüs.
static navigationOptions = { ... //禁止打开菜单 drawerLockMode: "locked-closed", //允许使用返回手势 gesturesEnabled: true, }
5.Problem mit der Inkonsistenz der Navigationsleistenhöhe
Bei Verwendung einer benutzerdefinierten Leiste. Android und iOS sind höchst inkonsistent. Android berechnet die Nav-Höhe von der Oberkante des Telefons aus. Standardmäßig verschiebt iOS die Höhe der Statusleiste nach unten. Um eine gleichmäßige Wirkung zu erzielen. Sie müssen die padding
Top-Eigenschaft der Android-Leiste auf die Höhe der Statusleiste einstellenimport {StatusBar, Platform} from "react-native"; navigationOptions = { ... headerStyle: { ... paddingTop: Platform.OS === "ios" ? 0 : StatusBar.currentHeight, }, }
Verwenden Sie headerRight Oder headerLeft kann die Schaltfläche oder Ansicht anpassen
static navigationOptions = { ... headerRight = (<TouchableOpacity style={{marginRight: 10}} onPress={...}> <Text style={styles.NavSureButton}>btn</Text> </TouchableOpacity>) }
class Demo extends React,Component{ componentWillMount() { //绑定方法 this.props.navigation.setParams({rightOnPress: this.rightBtnOnPress}); } //点击方法 rightBtnOnPress = ()=>{ ... } static navigationOptions = ({navigation}) => { const params = navigation.state.params || {}; let navigationOptions = { ... headerRight = (<TouchableOpacity style={{marginRight: 10}} onPress={params.rightOnPress}> <Text style={styles.NavSureButton}>btn</Text> </TouchableOpacity>) } return navigationOptions; }; ... }
JS behält eine Ziffer bei und entfernt Nichtziffern
JS behält zwei Dezimalstellen für Eingabezahlen bei Bestätigungscode
Das obige ist der detaillierte Inhalt vonWas sind die Vorsichtsmaßnahmen im tatsächlichen Kampf gegen React Navigation?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!