2017-11-01 5 views
0

내가 네이티브 반응에 새로운 해요 원하는 일을 할 수없고 내가 문제가 componentDidMount에AsyncStorage는 비동기이고 나는

나는 "AsyncStorage"를 사용하고 3 일 이상^_^내에서 소요 직면 이 반환되는 URL "? 82/wasily/MyDealOffer.php 사용자 ID가 = 4 : // **** HTTP"를 넣을 때 비동기 여전히 값

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

을 반환하지 있기 때문에 그것은 초기화 값을 사용하고 올바른 목록을 사용하지만 $ {data.foo} 사용할 때 "0"API (상태를 만들 때 기본값) 보내기 때문에 목록을 반환하지 않습니다

난 내 parmstudentid 상태에 대한 새로운 가치를 제공하기 위해이 코드를 사용했다

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

내가 AsyncStorage 실행

답변

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 /> 
    ); 
    } 
}