【问题标题】:Trying to use MOBX in React-Native尝试在 React-Native 中使用 MOBX
【发布时间】:2018-09-24 09:31:56
【问题描述】:

我已经阅读了很多关于在 React 中使用 mobx 的教程。 我正在尝试在 React Native 中使用存储逻辑来实现它,但我的结果不好,我无法从存储中检索我的全局状态。

这里是我的 app.js

import React from 'react';
import {StyleSheet, View} from "react-native";

// import Search from './Components/Search';
import Navigation from './Navigation/Navigation';
import FilmStore from './Stores/FilmStore';


import { observer } from 'mobx-react';

@observer
export default class App extends React.Component {
    constructor(props){
        super(props);

        // Empty 
        console.log(props.FilmStore);
       // empty
        console.log(FilmStore.test);
    }

  render() {
    return (
        <View style={styles.mainContainer}>
         <Navigation />
        </View>
    );
  }
}

const styles = StyleSheet.create({
    mainContainer: { flex: 1 },
});

这里是我的 mobx 商店

import { observable, computed, configure } from 'mobx';

// Strict mode
configure({
    enforceActions: 'always'
});

// Déclaration de notre store
class FilmStore {
    @observable test = 'aa';

    @computed setTest($text){
        this.test = $text;
    }
}

export default FilmStore;

如您所见,props.FilmStore 是空的。我如何在 react native 上使用 mobx 可能是错误的? 寻求帮助...

谢谢!

【问题讨论】:

  • 如何将FilmStore 传递给&lt;App /&gt;?您尝试的另一种方式不会按预期工作,因为您尝试访问 Class 上的属性而不是创建实例然后访问它。
  • 您的问题解决了吗?

标签: reactjs react-native mobx


【解决方案1】:

您没有实例化您的商店,我怀疑您在将其作为道具传递时也没有实例化。您可以在商店中进行一项更改并使用单例模式返回它的单个实例,更改

export default FilmStore;

export default new FilmStore();

【讨论】:

  • 你是对的。我忘记了很多事情。首先,我没有像你说的那样初始化课程。然后如果我想在其他视图中使用我的商店,我必须在导航组件中传递商店。感谢您的帮助
猜你喜欢
  • 2016-12-28
  • 2018-06-04
  • 2018-03-07
  • 1970-01-01
  • 2019-12-24
  • 1970-01-01
  • 2020-08-24
  • 1970-01-01
  • 2018-07-28
相关资源
最近更新 更多