我正在使用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
}
}
我在这里添加了完整的代码。这只是第一次调用,之后它只会从缓存中获取(我认为)。请帮助我。 谢谢
答案 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是一个主意)