#react-native #react-native-navigation
#react-native #react-native-navigation
Вопрос:
Я новичок в react-native. Я использую react-native-navigation (от wix) для навигации. Я создал компонент «Drawerscreen» для боковой панели ящика, в классе компонента я создал функцию с именем «navigateToScr». Здесь функция «navigateToScr» автоматически вызывается во время инициализации компонента без вызова из любого места, пожалуйста, кто-нибудь может объяснить мне, почему это происходит?
import React, {Component} from 'react';
import {Text, View, StyleSheet, TouchableOpacity, ScrollView, SafeAreaView } from 'react-native'
export default class Drawerscreen extends Component {
constructor (props){
super(props);
}
navigateToScr = () =>{
console.log('in');
}
render() {
return (
<View style={styles.container}>
<ScrollView>
<SafeAreaView style={styles.container} forceInset={{ top: 'always', horizontal: 'never' }}>
<TouchableOpacity onPress={this.navigateToScr()} style={styles.menulinkcon}>
<Text style={styles.menulink}>Test 1</Text>
</TouchableOpacity>
<TouchableOpacity onPress={this.navigateToScr()} style={styles.menulinkcon}>
<Text style={styles.menulink}>Test 2</Text>
</TouchableOpacity>
</SafeAreaView>
</ScrollView>
</View>
)
}
}
const styles = StyleSheet.create({ ... });
``````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````
Navigation.startSingleScreenApp({
screen: {
screen: "screen.MainScreen",
title: 'Main Screen',
},
drawer: {
left: {
screen: 'screen.Drawerscreen',
fixedWidth: 500
}
}
});
````````````````````````````````````````````````````````````````
Ответ №1:
Помещая скобки open amp; close после this.navigateToScr, вы фактически вызываете его и устанавливаете onPress на его возвращаемое значение. Если вы хотите запускать функцию только при ее нажатии, вместо этого используйте
onPress={this.navigateToScr}
или
onPress={() => this.navigateToScr()}
Последнее часто используется, когда вам нужно передать значение в метод.
Комментарии:
1. Есть ли какое-либо справочное приложение, доступное для изучения того, как управлять экранами, компонентами, навигациями и т. Д.
2. Я предполагаю, что их много — я бы поискал на YouTube компоненты класса React (например, эта серия будет одной из многих: youtube.com/watch?v=MhkGQAoc7bc ). Просто имейте в виду, что ссылка на имя метода сохранит его для события onClick. Вызов метода (со скобками) сохранит возвращаемое значение вместо сохранения этого метода на потом. Это просто еще одна переменная.