2017-07-29 11 views
0

Wie kann ich Daten von AsyncStorage in den Redux-Speicher laden, wenn die Anwendung zum ersten Mal geladen wird?React Native: Ladewert von AsyncStorage

Ich habe versucht, eine Check-Funktion in componentWillMount aufrufen.

componentWillMount(){ 
    debugger; 
    this.check(); 
} 

und in Schach Ich habe versucht, den Wert von AsyncStorage und speichern Sie es zu redux Speicherobjekt zu nehmen.

async check(){ 
    await AsyncStorage.getItem('location').then((location) => { 
     this.props.location[0].city = location; 
     } 
    }); 
    this.props.selectLocation(this.props.location); 
} 

Da es sich um eine asynchrone Funktion ist, bin ich nicht in der Lage, die Werte zu erhalten und speichern sie selectLocation Wirkung von redux anzuzeigen.

Wie werden die Daten ordnungsgemäß abgerufen und gespeichert, bevor die Komponente installiert wird?

Update:

In meinem index.android.js änderte ich meinen Speicher wie diese,

import { persistStore, autoRehydrate } from 'redux-persist' 
import combineReducers from './src/Redux/reducers/combineReducers'; 
// const store = createStore(combineReducers); 
const store = compose(autoRehydrate())(createStore)(combineReducers) 
persistStore(store, {storage: AsyncStorage},() => { 
    console.log('restored'); 
    console.log(store); 
}) 


export default class ReactNavigation extends Component { 
    render() { 
    return (
     <Provider store = {store}> 
     <App /> 
     </Provider> 
    ); 
    } 
} 
+0

warten this.check(); – David

Antwort

0

Ihre Komponente Ereignis-Listener speichern durch Änderungen hören sollten und die Daten zeigen, sollten wenn die Daten in den Speicher geladen werden.

Für den Moment, wenn die Daten nicht da sind, sollten Sie etwas wie ein Spinner anzeigen, um den Benutzer wissen zu lassen, dass es geladen wird.

Im Idealfall möchten Sie nicht, dass componentWillMount auf das Laden der Daten wartet.

Verwandte Themen