官术网_书友最值得收藏!

Setting up the store

After understanding how MobX works, we are ready to create our store:

/*** src/store.js ** */

import { observable } from 'mobx';
import { AsyncStorage } from 'react-native';

class Store {
@observable feeds;
@observable selectedFeed;
@observable selectedEntry;

constructor() {
AsyncStorage.getItem('@feeds').then(sFeeds => {
this.feeds = JSON.parse(sFeeds) || [];
});
}

_persistFeeds() {
AsyncStorage.setItem('@feeds', JSON.stringify(this.feeds));
}

addFeed(url, feed) {
this.feeds.push({
url,
entry: feed.entry,
title: feed.title,
updated: feed.updated,
});
this._persistFeeds();
}

removeFeed(url) {
this.feeds = this.feeds.filter(f => f.url !== url);
this._persistFeeds();
}

selectFeed(feed) {
this.selectedFeed = feed;
}

selectEntry(entry) {
this.selectedEntry = entry;
}
}

const store = new Store();
export default store;

We have already seen the basic structure of this file in the MobX section of this chapter. Now, we will add some methods to modify the list of feeds and to select a specific feed/entry when the user taps on them in our app's listings for feeds/entries.

We are also making use of AsyncStorage to persist the list of feeds every time it is modified by either addFeed or removeFeed

主站蜘蛛池模板: 武穴市| 呼伦贝尔市| 白山市| 满洲里市| 沅江市| 马鞍山市| 平顺县| 长春市| 临沭县| 保靖县| 乐东| 雷山县| 德安县| 北票市| 玉溪市| 崇州市| 衡南县| 博白县| 苍南县| 自贡市| 封丘县| 铅山县| 武川县| 隆林| 元朗区| 松原市| 株洲县| 安塞县| 敦煌市| 昌平区| 英超| 永安市| 宁南县| 新源县| 河东区| 台中市| 和政县| 丰原市| 方正县| 河南省| 谷城县|