Почему во время рендеринга экрана пользовательские функции выполняются автоматически в компоненте реагирующей нативной навигации - PullRequest
0 голосов
/ 14 апреля 2019

Я новичок в реакции-родной. Я использую response-native-navigation (by 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 Ответ

0 голосов
/ 14 апреля 2019

Помещая скобки открытия и закрытия после this.navigateToScr, вы фактически вызываете его и устанавливаете для onPress возвращаемое значение.Если вы хотите запускать функцию только тогда, когда она нажата, вместо этого используйте

onPress={this.navigateToScr}

или

onPress={() => this.navigateToScr()}

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

...