Я пытаюсь использовать mobx 4 с реагировать на родную, у меня есть несколько проблем с настройкой плиты котла.
У меня есть следующий код:
App.js
import React, { Component } from 'react';
import {
Platform,
StyleSheet,
Text,
View
} from 'react-native';
import { observer, inject } from "mobx-react";
import { Provider } from 'mobx-react';
import Store from './store';
import { StackNavigator } from 'react-navigation';
import ProductScreen from './screens/ProductScreen';
const AppNavigator = StackNavigator({
ProductScreen: { screen : ProductScreen }
})
export default class App extends React.Component {
render() {
return (
<Provider store={Store}>
<AppNavigator />
</Provider>
);
}
}
магазин / index.js
import { observable } from 'mobx'
import ProductStore from './ProductStore'
class Store {
constructor() {
this.ProductStore= new ProductStore(this)
}
}
export default Store
магазин / ProductStore.js
import { runInAction, extendObservable, action } from "mobx";
export default extendObservable(this, {
products: [],
loading: false,
loadProducts: action(async () => {
this.loading = true;
// fetch data from api
const response = await fetch("https://random.com/api/?results=10");
const json = await response.json();
runInAction(() => {
this.products = json.results;
this.loading = false;
});
})
});
ProductsScree:
import React, { Component } from 'react';
import {
TouchableOpacity,
FlatList,
ActivityIndicator,
Alert,
StyleSheet,
Text,
View,
TextInput,
Button,
Animated
} from 'react-native';
import { observer, inject } from "mobx-react";
class ProductsScreen extends Component {
render() {
return (
<View>
<Text>
<button onPress={this.props.Store.loadProducts} title="Get Products" />
</Text>
</View>
);
}
}
export default ProductsScreen;
Я хочу иметь возможность запускать функцию loadProducts при нажатии кнопки и иметь возможность доступа к данным (продукты, загрузка переменных). Любая помощь с этим будет оценена. В качестве альтернативы я перепишу код, используя observable и inject.
Спасибо