Невозможно настроить MOBX 4 для работы с реагировать родной - PullRequest
0 голосов
/ 17 мая 2018

Я пытаюсь использовать 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.

Спасибо

...