diff --git a/src/store/superheroes.js b/src/store/superheroes.js
new file mode 100644
index 0000000..1444702
--- /dev/null
+++ b/src/store/superheroes.js
@@ -0,0 +1,27 @@
+import {action, computed, makeObservable, observable} from 'mobx';
+
+class Superheroes {
+ superheroes = [];
+
+ constructor() {
+ makeObservable(this, {
+ superheroes: observable,
+ addHero: action,
+ deleteHero: action,
+ count: computed,
+ });
+ }
+ addHero(hero) {
+ console.log('* ADD HERO: ' + JSON.stringify({...hero, id: Math.random()}));
+ this.superheroes = [...this.superheroes, {...hero, id: Math.random()}];
+ }
+
+ deleteHero(id) {
+ this.superheroes = this.superheroes.filter((hero) => hero.id !== id);
+ }
+ get count() {
+ return this.superheroes.length;
+ }
+}
+
+export const superheroStore = new Superheroes();
diff --git a/src/view/ListScreen.js b/src/view/ListScreen.js
old mode 100644
new mode 100755
index b4a27ad..ea54bbf
--- a/src/view/ListScreen.js
+++ b/src/view/ListScreen.js
@@ -1,38 +1,28 @@
-import React, { useEffect, useState } from 'react';
+import React from 'react';
+import {observer} from 'mobx-react';
-import { CheeatahListText } from '../style/text';
-import { Container } from '../style/container';
-import { FlatList } from 'react-native';
-import { ListSeparator } from '../style/separator';
+import {CheeatahListText} from '../style/text';
+import {Container} from '../style/container';
+import {FlatList} from 'react-native';
+import {ListSeparator} from '../style/separator';
+import {superheroStore} from '../store/superheroes';
-export default ListScreen = ({ route }) => {
- const [superheroList, setHeroList] = useState([]);
-
- useEffect(() => {
- setHeroList(route.params.list)
- }, [])
-
-
- deleteHero = (id) => {
- let filteredHeroes = superheroList.filter(hero => hero.id !== id)
- setHeroList(filteredHeroes)
- }
-
- return (
-
- item.id}
- style={{ width: '100%', marginTop: 20, paddingBottom: 10 }}
- ItemSeparatorComponent={() => }
- renderItem={({ item }) => (
- deleteHero(item.id)}
- description={`Power: ${item.power}`}
- />
- )}
- />
-
- );
-}
+export default ListScreen = observer(() => {
+ return (
+
+ item.id}
+ style={{width: '100%', marginTop: 20, paddingBottom: 10}}
+ ItemSeparatorComponent={() => }
+ renderItem={({item}) => (
+ superheroStore.deleteHero(item.id)}
+ description={`Power: ${item.power}`}
+ />
+ )}
+ />
+
+ );
+});
diff --git a/src/view/home.js b/src/view/home.js
old mode 100644
new mode 100755
index 4b1921c..afa560b
--- a/src/view/home.js
+++ b/src/view/home.js
@@ -1,44 +1,59 @@
-import React, { useState } from 'react';
+import React, {useState} from 'react';
+import {FlatList} from 'react-native';
+import {Observer} from 'mobx-react';
-import { Title } from '../style/text';
-import { Container, RowContainer } from '../style/container';
-import { CheetahInput } from '../style/input';
-import { CheeatahButton } from '../style/button';
+import {superheroStore} from '../store/superheroes';
+import {CheeatahListText} from '../style/text';
+import {ListSeparator} from '../style/separator';
+import {Title} from '../style/text';
+import {Container, RowContainer} from '../style/container';
+import {CheetahInput} from '../style/input';
+import {CheeatahButton} from '../style/button';
-export default Home = ({ navigation }) => {
+export default Home = ({navigation}) => {
+ const [name, setName] = useState('');
+ const [power, setPower] = useState('');
- const [superheroList, setHeroList] = useState([]);
- const [name, setName] = useState('');
- const [power, setPower] = useState('');
+ console.log('* reloading screen...');
- addHero = () => {
- setHeroList(list => [...list, { name, power, id: Math.random() }])
- }
+ addHero = () => {
+ setHeroList((list) => [...list, {name, power, id: Math.random()}]);
+ };
- return (
-
- Superheroes
- setName(text)}
- />
- setPower(text)}
- />
-
- addHero(text)}
- marginRight={12}
- />
- navigation.navigate('List', {
- list: superheroList,
- })}
- />
-
-
- );
-}
+ return (
+
+ Superheroes
+ setName(text)} />
+ setPower(text)} />
+
+ superheroStore.addHero({name, power})}
+ marginRight={12}
+ />
+ navigation.navigate('List')}
+ />
+
+
+
+ {() => (
+ item.id}
+ style={{width: '100%', marginTop: 20, paddingBottom: 10}}
+ ItemSeparatorComponent={() => }
+ renderItem={({item}) => (
+ superheroStore.deleteHero(item.id)}
+ description={`Power: ${item.power}`}
+ />
+ )}
+ />
+ )}
+
+
+ );
+};