stackoverflow.com/questions/50212127/...

я действительно ужасное время, когда я работаю с native и могу получить доступ к функциям, переменным и объектам из более глубоких уровней функций. Я, честно говоря, думал, что Redux будет моей спасительной грацией, но с этим я сталкиваюсь точно с тем же препятствием. Пример:

export class Home extends React.Component {

static propTypes = {
    navigation: PropTypes.object,
    dispatch: Proptypes.func,
};

componentDidMount() {
    Firebase.init();
    firebase.auth().onAuthStateChanged((user) => {
        if (user) {
            this.setState({ loading: false, user });
            firebaseUserID = this.state.user.uid;
            this.props.dispatch(setUserID(firebaseUserID));
            firebaseRef = firebase.database().ref().child("Profiles").child(this.props.userID);
            firebaseRef.once("value").then(function(snapshot) {
                firebaseUserName = snapshot.child("Name").val();
                this.props.dispatch(setUserName(firebaseUserName));
                console.log('Logged in user: ' + this.props.userName);
            });
            this.props.navigation.navigate('Map');
        } else {
            this.props.navigation.navigate('Login');
        }
    });
}

В этом примере первый вызов моей вещи в Redux совершенно нормален:

this.props.dispatch(setUserID(firebaseUserID));

Это захватывает правильное имя пользователя и сохраняет его в моем магазине Redux. Нет проблем.

Ошибка с этой строкой:

this.props.dispatch(setUserName(firebaseUserName));

Поскольку он называется на один уровень глубже, чем предыдущий оператор, поэтому контекст «это» отличается. Это часть подфункции ниже, и поэтому this.props здесь не существует, хотя буквально на четыре строки выше это нормально:

firebaseRef.once("value").then(function(snapshot) {

Как только мне приходится создавать подфункции (что ВСЕ ВРЕМЯ, потому что так работает код), я теряю возможность доступа ко всем ресурсам, необходимым для работы приложения. Я пробирался через хитроумные обходные пути и излишнее воссоздание переменных, но теперь достаточно достаточно, мне нужно, чтобы это работало правильно, как нормальный язык. Итак, что я делаю не так? Как я должен создавать объекты, функции и переменные, чтобы я мог их использовать?

Возможно, если бы кто-то мог помочь мне разобраться с приведенным выше конкретным примером, возможно, это откроет мне глаза на то, как я должен идти вперед.

Спасибо всем, я уверен, что для некоторых из вас это понятно, но для меня это стена, через которую я не могу пройти.

Ответы на вопрос(1)

Ваш ответ на вопрос