Передача данных из Android Native в React Native - PullRequest
0 голосов
/ 12 февраля 2019

Я создаю интегрированное приложение с нативным Android и нативным React, связывающимся друг с другом.

Для отправки данных из нативного в нативный React я пытался передать данные с помощью начальных параметров, но они не работали и показывалине определено.Затем я попытался использовать DeviceEventEmitter, который работал, но возникла небольшая проблема.

РЕДАКТИРОВАНИЕ:

Вот фрагмент кода :

class Details extends Component {

    constructor(props){
    super(props);
            this.state={data: '', id: '278'}
    }

    componentDidMount(){
        const eventEmitter = new NativeEventEmitter();
        this.subscription = eventEmitter.addListener('customEventName',(e: Event)=>{
            this.setState({id: e.key1});
            console.warn(this.state.id);    
        });

        const API_key = "APIkey"
        console.warn(this.state.id);

        const URL = "https://api.themoviedb.org/3/movie/" + this.state.id + "?api_key=" + API_key + "&language=en-USs"

        return fetch(URL, {
          method: 'GET'
        })
        .then((response) => response.json())
        .then((responseJson) => {
          this.setState({
            data: responseJson,
          },
          function(){
          });
        })
        .catch((error) =>{
          console.error(error);
        });
     }

    componentWillUnmount(){
        this.subscription.remove();
    }

    render() {
        return(
            /*something*/
        );
    }
}

Значение идентификатора успешно отправляется из собственного компонента в собственный компонент React.

Проблема: console.warn() внутри addlistener() отображается после console.warn(), который ниже объявления API_key, и, следовательно, this.state.id не обновляется.

Пожалуйста, любая помощь будет оценена.

1 Ответ

0 голосов
/ 12 февраля 2019

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

 DeviceEventEmitter.addListener('customEventName',(e: Event)=> {
        this.id = e.key1
        console.warn("inside event emitter", this.id);
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...