asyncstorage 是react-native 用來做異步存儲使用的 ,它的所有的api都有一個回調方法,回調方法的第一個參數是error,顯示錯誤資訊,如果沒有錯誤則為 null ,asyncstorage 傳回的都是一個promise
對象 ,一下是一些比較常用到的api
static getitem(key:string , callback:(error,result)): 根據鍵來擷取值,擷取的結果會在回調函數中。
static setitem(key:string , value:string , callback:(error)): 設定鍵值對。
static removeitem(key:string , callback:(error)): 将根據鍵移出一項
static mergeitem:(key:string , value:string , callback:(error)): 合并現有的值和輸入值。
static clear(callback:(error)): 清除所有的項目。
static getallkeys(callback:(error)): 擷取所有的鍵。
static multiget(keys,callback:(errors,result)):擷取多項,其中keys是字元串數組。
static multiset(keyvaluepairs,callback:(errors)):設定多項,其中keyvaluepairs是字元串的二維數組。
static multiremove(keys,callback(errors)):删除多項,其中keys是字元串數組。
static multimerge(keyvaluepairs,callback:(errors)):多個鍵值合并,其中keyvaluepairs是字元串中的二維數組。
<code>'use strict'</code><code>;</code>
<code>import react, {</code>
<code> </code><code>appregistry,</code>
<code> </code><code>component,</code>
<code> </code><code>stylesheet,</code>
<code> </code><code>text,</code>
<code> </code><code>view,</code>
<code> </code><code>asyncstorage,</code>
<code> </code><code>touchablehighlight,</code>
<code>} from</code><code>'react-native'</code><code>;</code>
<code>var</code>
<code>storage_key_one =</code><code>'@asyncstoragedemo:key_one'</code><code>;</code>
<code>storage_key_message =</code><code>'@asyncstoragedemo:key_message'</code><code>;</code>
<code>//簡單封裝一個元件</code>
<code>class custombutton extends react.component {</code>
<code> </code><code>render() {</code>
<code> </code><code>return</code>
<code>(</code>
<code> </code><code><touchablehighlight</code>
<code> </code><code>style={styles.button}</code>
<code> </code><code>underlaycolor=</code><code>"#a5a5a5"</code>
<code> </code><code>onpress={</code><code>this</code><code>.props.onpress}></code>
<code> </code><code><text style={styles.buttontext}>{</code><code>this</code><code>.props.text}</text></code>
<code> </code><code></touchablehighlight></code>
<code> </code><code>);</code>
<code> </code><code>}</code>
<code>}</code>
<code>class asyncstoragedemo extends component {</code>
<code> </code><code>constructor(props){</code>
<code> </code><code>super</code><code>(props);</code>
<code> </code><code>this</code><code>.state={</code>
<code> </code><code>messages:[],</code>
<code> </code><code>};</code>
<code> </code><code>//元件挂載之後回調方法</code>
<code> </code><code>componentdidmount(){</code>
<code> </code><code>this</code><code>._loadinitialstate().done();</code>
<code> </code><code>//初始化資料-預設從asyncstorage中擷取資料</code>
<code> </code><code>async _loadinitialstate(){</code>
<code> </code><code>try</code><code>{</code>
<code> </code><code>var</code>
<code>value=await asyncstorage.getitem(storage_key_one);</code>
<code> </code><code>if</code><code>(value!=</code><code>null</code><code>){</code>
<code> </code><code>this</code><code>._appendmessage(</code><code>'從存儲中擷取到資料為:'</code><code>+value);</code>
<code> </code><code>}</code><code>else</code><code>{</code>
<code> </code><code>this</code><code>._appendmessage(</code><code>'存儲中無資料,初始化為空資料'</code><code>);</code>
<code> </code><code>}</code>
<code> </code><code>}</code><code>catch</code><code>(error){</code>
<code> </code><code>this</code><code>._appendmessage(</code><code>'asyncstorage錯誤'</code><code>+error.message);</code>
<code> </code><code>}</code>
<code> </code><code>//進行儲存資料_one</code>
<code> </code><code>async _savevalue_one(){</code>
<code> </code><code>try</code><code>{</code>
<code> </code><code>await asyncstorage.setitem(storage_key_one,</code><code>'我是老王'</code><code>);</code>
<code> </code><code>this</code><code>._appendmessage(</code><code>'儲存到存儲的資料為:'</code><code>+</code><code>'我是老王'</code><code>);</code>
<code> </code><code>}</code><code>catch</code><code>(error){</code>
<code> </code><code>this</code><code>._appendmessage(</code><code>'asyncstorage錯誤'</code><code>+error.message);</code>
<code> </code><code>}</code>
<code> </code><code>//進行存儲資料删除_one</code>
<code> </code><code>async _removevalue_one(){</code>
<code> </code><code>await asyncstorage.removeitem(storage_key_one);</code>
<code> </code><code>this</code><code>._appendmessage(</code><code>'資料删除成功...'</code><code>);</code>
<code> </code><code>//進行把message資訊添加到messages數組中</code>
<code> </code><code>_appendmessage(message){</code>
<code> </code><code>this</code><code>.setstate({messages:</code><code>this</code><code>.state.messages.concat(message)});</code>
<code> </code><code><view></code>
<code> </code><code><text style={styles.welcome}></code>
<code> </code><code>asyncstorage使用執行個體</code>
<code> </code><code></text></code>
<code> </code><code><custombutton text=</code><code>'點選存儲資料_我是老王'</code>
<code>onpress={</code><code>this</code><code>._savevalue_one}/></code>
<code> </code><code><custombutton text=</code><code>'點選删除資料'</code>
<code>onpress={</code><code>this</code><code>._removevalue_one}/></code>
<code> </code><code><text style={styles.content}>資訊為:</text></code>
<code> </code><code>{</code><code>this</code><code>.state.messages.map((m) => <text style={styles.content} key={m}>{m}</text>)}</code>
<code> </code><code></view></code>
<code>const styles = stylesheet.create({</code>
<code> </code><code>welcome: {</code>
<code> </code><code>fontsize: 14,</code>
<code> </code><code>textalign:</code><code>'left'</code><code>,</code>
<code> </code><code>margin: 10,</code>
<code> </code><code>},</code>
<code> </code><code>content:{</code>
<code> </code><code>fontsize: 13,</code>
<code> </code><code>button: {</code>
<code> </code><code>margin:5,</code>
<code> </code><code>backgroundcolor:</code><code>'white'</code><code>,</code>
<code> </code><code>padding: 15,</code>
<code> </code><code>borderbottomwidth: stylesheet.hairlinewidth,</code>
<code> </code><code>borderbottomcolor:</code><code>'#cdcdcd'</code><code>,</code>
<code>});</code>
<code>appregistry.registercomponent(</code><code>'asyncstoragedemo'</code><code>, () => asyncstoragedemo);</code>