React Native: API не вызывается во второй раз (fetch / axios) - PullRequest
0 голосов
/ 02 марта 2019

Я создаю реактивное приложение с использованием метода fetch для получения данных из API, но когда я собираю приложение (удаляю и устанавливаю новое приложение), в этот раз он вызывает API, но во 2-й раз это не так.Я также использую

componentDidMount, componentWillMount

, но у меня не работает.ниже мой код:

export default test extends Component{
_isMounted = false;
constructor(props){
  super(props);
  this.state = {
      showList:[]
 }
}
componentDidMount() {
    let currentComponent = this;
     currentComponent._isMounted = true;
    fetch(API_URL, {
        method: 'GET',
        headers: {
            Accept: 'application/json',
            'Content-Type': 'application/json',
        }
    }).then((response) => { return response.json()})
    .then((responseJson) => {
        console.warn("responseJson: ", responseJson);
        if(currentComponent._isMounted){
         currentComponent.setState({showList: responseJson.data});
        }

    })
    .catch((error) => {
      console.error(error);
    }); 

}
componentWillUnmount(){
    this._isMounted = false
}

}

Я добавил полный код здесь.Это вызывается только в первый раз, после этого он будет получать только из кэша (я думаю). Пожалуйста, помогите мне.Спасибо

1 Ответ

0 голосов
/ 07 марта 2019

Я бы посмотрел на хук onEnter на вашей сцене, используя react-native-router-flux.

Что-то вроде этого должно работать:

class Test extends Component {
  static onEnter() {
    fetch(API_URL, {
        method: 'GET',
        headers: {
            Accept: 'application/json',
            'Content-Type': 'application/json',
        }
    }).then((response) => { return response.json()})
    .then((responseJson) => {
        console.warn("responseJson: ", responseJson)
        if (currentComponent._isMounted) {
         currentComponent.setState({ showList: responseJson.data })
        }

    })
    .catch((error) => {
      console.error(error)
    })
  }
}

(если вам нужночтобы получить доступ к this в методе, здесь является идеей)

...