2016-06-01 10 views
5

React Native Docs (https://facebook.github.io/react-native/docs/asyncstorage.html) mówi:Dlaczego React Native docs zaleca użycie abstrakcji na AsyncStorage?

Zaleca się stosowanie abstrakcji na szczycie AsyncStorage zamiast AsyncStorage bezpośrednio do niczego więcej niż lekkiego użytkowania, ponieważ działa globalnie.

Nie rozumiem, dlaczego zaleca, abym napisał abstrakcję tylko dlatego, że działa globalnie.

Ma sens używać go tylko do lekkich rzeczy, ale dlaczego działa globalnie coś złego?

Odpowiedz

5

Pomyśl o AsyncStorage elementach takich jak zmienne globalne, więc za każdym razem, gdy coś dodajesz lub czytasz coś, do czego uzyskujesz dostęp do globalnej. Może to mieć sens w przypadku podstawowego adresu URL interfejsu API, ale w przypadku większości innych rzeczy będzie się bałagan.

Wyobraź sobie, że musisz przechowywać informacje o użytkownikach, możesz zacząć od ich nazwy, więc dodajesz name do Async. Później zdajesz sobie sprawę, że chcesz ich DOB, to może ich pets i tak dalej. Jeśli tworzysz je globalnie, będziesz także uzyskiwał do nich dostęp za pomocą nazw zmiennych, takich jak name - które w globalnym kontekście zaczynają tracić znaczenie. Ponadto, trzeba by napisać:

AsyncStorage.getItem('name', (err, result) => { 
    this.setState({ 
     name: result 
    }) 
}) 

całym projekcie - w przyszłości, jeśli nazwę zmiennej name zmiany, musisz zaktualizować go we wszystkich plikach.

Zamiast byłbyś lepszy od pisania User klasy, który zapewniałby zmienne instancji (lub coś takiego), a które mogłyby następnie serialise się do Async. Co więcej, możesz z łatwością zamienić mechanizm magazynowania, jeśli projekt został później poparty przez interfejs API lub wymagał mocniejszego systemu pamięci opartego na bazie danych.