2015-11-09 20 views
6

Tôi cần lưu trữ một số dữ liệu người dùng, chẳng hạn như cài đặt, đăng nhập, mã thông báo vv giữa phiên. Đã cố gắng asyncstorage nhưng khi tôi khởi động lại ứng dụng, dữ liệu trong đó bị xóa. Tìm thấy một số mô-đun đề cập đến keychain hoặc NSUserDefaults, nhưng tôi không biết cái nào và bất kỳ mô đun nào tốt cho mục đích này.
Tính năng chính là tôi có thể lấy dữ liệu đó ngay cả sau khi ứng dụng bị giết và khởi động lại. Chủ yếu là trên iOS nhưng nếu nó cũng sẽ được trên Andorid, đó sẽ là tuyệt vời.
Có ai có kinh nghiệm với nó không?Dữ liệu lưu trữ gốc tự nhiên giữa các sesions

EDIT:
Tôi đã thử sử dụng asyncstorage. Nhưng nó không làm gì khi bạn giết và khởi động lại ứng dụng.
Mã của tôi để lưu trữ dữ liệu:

AsyncStorage.setItem("prefix", responseData['prefix']) 
AsyncStorage.setItem("api_token", responseData['api_token']) 

Và lấy dữ liệu:

async _checkAutoLogin(){ 
    var prefix; 
    var token; 
    try { 
     prefix = await AsyncStorage.getItem("prefix"); 
     token = await AsyncStorage.getItem("api_token"); 
} catch (error) { 
     AlertIOS.alert('AsyncStorage error: ' + error.message); 
    } 
+0

xin chia sẻ một số mã vào cách bạn sử dụng asyncstorage (nó trả về một lời hứa) – Sulliwane

+0

Chỉnh sửa câu trả lời của tôi, và thêm mã. –

Trả lời

0

https://facebook.github.io/react-native/docs/asyncstorage.html#content có thể làm các trick. Nó nói rằng đó là lưu trữ liên tục mà có thể có nghĩa là chất lượng bạn đang tìm kiếm.

+1

Thật không may nó không lưu trữ khi bạn giết các ứng dụng và sau đó khởi động nó. Và tôi muốn làm một cái gì đó giống như autologin. –

0

này hoạt động ngay cả sau khi khởi động lại ứng dụng:

_login:function(token){ 
    AsyncStorage.setItem('ApiToken',token, 
    () => this.setState({isLoggedIn:true}), 
     (error) => console.log(error) 
    ); 
    }, 
8

AsyncStorage nên lưu dữ liệu của bạn với thiết bị để bạn có thể truy cập nó bất kể nếu ứng dụng của bạn trước đây đã được gửi đến nền hoặc đã được lạnh ra mắt . Nếu bạn đang cố gắng sử dụng từ khóa chờ đợi, tôi nghĩ rằng có một số thiết lập thêm mà bạn sẽ cần phải làm để làm cho nó chạy. Here's a good article để giúp bạn thực hiện điều đó.

Ngoài ra, tùy thuộc vào bao nhiêu bạn có ý định làm với AsyncStorage, các Phản ứng tại chỗ Native nói điều này:

Chúng tôi đề nghị bạn sử dụng một sự trừu tượng trên đầu trang của AsyncStorage thay vì AsyncStorage trực tiếp cho bất cứ điều gì hơn sử dụng ánh sáng vì nó hoạt động trên toàn cầu.

Tôi đã viết một wrapper nhỏ xung quanh nó gọi là react-native-simple-store mà chỉ kết thúc tốt đẹp AsyncStorage và phơi bày một API Minimalistic, nhưng mang đến cho bạn JSON.stringifying và JSON.parsing theo mặc định cho các giá trị phức tạp hơn, do đó bạn không cần phải phải lo lắng về nó.

Hoặc nếu bạn cần nhiều hơn một cơ sở dữ liệu cục bộ there are other modules for that.

Hy vọng điều đó sẽ hữu ích!

0

Ngoài ra còn có Realm cho Phản ứng Native mang đến cho bạn một cơ sở dữ liệu đầy đủ địa phương: https://realm.io

Các vấn đề liên quan