пытаясь впервые сократить время в приложении, ориентированном на реакцию, и у меня есть эта проблема ...
после того, как я подключу компонент и передаю вызов mapStateToProps, внутри функции я могу отлично записать состояние. Но когда я использую эту опору в компоненте, он не определен. Я отлично использую состояние редукции в другом компоненте ...
Спасибо!
import React from 'react';
import { Container, Content, Button,
Text,Card,CardItem,Body,Icon,Header,Left,Right,Title } from 'native-base';
import { connect } from 'react-redux';
class HomeScreen extends React.Component {
static navigationOptions = {
header: null
};
tryLogout(){
console.info(this.props.isLogged);
// UNDEFINED HERE
}
render() {
return (
<Container>
<Header>
<Left></Left>
<Body>
<Title>Menu</Title>
</Body>
<Right>
<Button transparent onPress = {this.tryLogout}>
<Icon name='menu' />
</Button>
</Right>
</Header>
<Content padder>
</Content>
</Container>
);
}
}
const mapStateToProps = state => {
console.info(state.isLogged);
// I GET DATA HERE
return {
isLogged: state.isLogged
}
}
export default connect(mapStateToProps,{})(HomeScreen);



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Проблема в том, что когда вы вызываете this.tryLogout, ключевое слово this динамически привязывается к событию, а не к самому component, поэтому событие не имеет той опоры, которую вы ищете.
Вы можете использовать разные подходы к решению этой проблемы:
Использование именованных стрелочных функций
tryLogout = () => console.info(this.props)
...
onPress = {this.tryLogout}
Используя метод bind
onPress = {this.tryLogout.bind(this)}
Использование встроенных стрелочных функций
onPress = {() => this.tryLogout()}.
Вы можете ознакомиться с различными методами в документации: Как привязать функцию к экземпляру компонента?
Вы получаете эту ошибку, потому что ваш tryLogout() не привязан к вашему компоненту. Итак, ссылка на this не относится к вашему компоненту. Измените объявление на это:
tryLogout = () => {
console.info(this.props.isLogged);
}
() => {}, известный как arrow function, связывает за вас.
КОНЧИК:
Если вы создаете метод для своего компонента, которому требуется доступ к любому prop или state, вам необходимо привязать функцию к классу компонента. Когда вы объявляете метод, как я сделал выше, вы привязываете его. Итак, ваш метод будет иметь возможность доступа к любому prop или state вашего компонента.
Ваш код должен работать нормально. Просто случайно пытаетесь удачи, не могли бы поделиться методом
combineReducers?