React Native:API没有第二次调用(fetch / axios)

时间:2019-03-02 15:26:05

标签: react-native react-native-router-flux

我正在使用fetch方法创建react-native应用程序以从API获取数据,但是当我构建应用程序(删除并安装新应用程序)时,它正在调用API,但是第二次却没有。 我也使用

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 :(得分:1)

我会使用other查看您场景中的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) }) } } ,则here是一个主意)