2017-02-02 2 views
2

У меня есть компонент в реакции родным:Как получить доступ к состоянию из функции обратного вызова

export default class Screen extends Component { 
    constructor(props){ 
    super(props); 
    this.state = { 
     prop1: false, 
     prop2: simpleFunc 
    }; 
    } 
    simpleFunc =() => { /*...*/ } 

    componentWillMount() { 
     BackgroundGeolocation.on('location', this.onLocation); 

Последняя строка метод обратного вызова, которая будет вызываться на новом месте.
Из этого метода я не могу получить доступ к this.state или this.simpleFunc().

Что делать, чтобы обновить состояние из функции обратного вызова?

+0

Это потому, что вы используете функцию стрелки? – evolutionxbox

+0

На месте выглядит так: 'onLocation (location) {' – 1110

ответ

3

Для того, чтобы получить доступ к this внутри onLocation вам необходимо связать функцию обратного вызова:

componentWillMount() { 
     BackgroundGeolocation.on('location', this.onLocation.bind(this)); 

или, вы можете использовать функцию стрелки (которая будет использовать лексическую область родителя):

componentWillMount() { 
     BackgroundGeolocation.on('location', (location) => this.onLocation(location)); 
Смежные вопросы