0

我是 React Native 的新手,我遇到了超过 3 天的问题 ^_^

我在 componentDidMount 中使用“AsyncStorage”,但它使用的是 init 值,因为异步仍然没有返回值

var data = {foo:this.state.parmstudentid};
fetch(`http://****:82/wasily/MyDealOffer.php?UserID=${data.foo}`, 

什么时候放 url "http://****:82/wasily/MyDealOffer.php?UserID=4" 它返回了正确的列表,但是当我使用 ${data.foo} 它没有返回列表,因为它是向 api 发送“0”(创建状态时的默认值)

AsyncStorage.getItem("UserID").then((value) => {
this.setState({parmstudentid: value});
}).done(()=>{
this.setState({AsyncResult:true})
})

我已经使用此代码为我的 parmstudentid 状态带来了新的价值

在 AsyncStorage 运行之前,我如何才能停止运行所有代码

4

1 回答 1

1

你可能想要这样的东西吧?

AsyncStorage
  .getItem("UserId")
  .then( val => {
    this.setState({ parmstudentid: val });
    fetch(`http://****:82/wasily/MyDealOffer.php?UserID=${val}`)
    // etc
  })

如果您只使用一次该值,甚至可能不需要 setState 部分。或者,如果您需要一组更复杂的加载操作,您可以遵循这种类型的模式:

export default class App extends Component {
  componentWillMount(){
    AsyncStorage
      .getItem("UserId")
      .then( val => this.setState({ parmstudentid: val, loading: false }) );
  }

  componentWillUpdate(props, state){
    if(!state.loading){
      // make your callout here
    }
  }

  render() {
    return (
      <View />
    );
  }
}
于 2017-11-01T13:58:05.640 回答