React native 集成 Mobx

发布于 2023-12-20 16:19:33 字数 1553 浏览 19 评论 0

store:

import { observable, action } from 'mobx'

class Auth {
  @observable
  status = 'init status';

  @action.bound
  login() {
    this.status = 'login';
  }

  @action.bound
  logout() {
    this.status = 'logout';
  }
}

const auth = new Auth();

export default auth;

通过 Provider 可以在多个组件中注入 store,尤其是引入了 react-navigation,无法显式地通过 props 传递 store。

import React, {Component} from 'react'
import { AppRegistry } from 'react-native';
import App from './src/App';
import auth from './src/stores/auth'
import { Provider, observer } from 'mobx-react'

@observer
class Firefly extends Component {
  render() {
    return (
      <Provider auth={auth}>
        <App/>
      </Provider>
    );
  }
}
AppRegistry.registerComponent('firefly', () => Firefly);

HomeScreen:

import React, { Component } from 'react'
import {
  View,
  Text,
  Button,
} from 'react-native'
import { observer, inject } from 'mobx-react'


@inject('auth')
@observer
class HomeScreen extends Component {
  static navigationOptions = {
    title: 'Welcome',
    headerStyle: {
      backgroundColor: '#fff',
      elevation: 0,
    },
    style: {
      borderColor: '#fff'
    },
  };

  render() {
    return (
      <View>
        <Text>{ this.props.auth.status }</Text>
        <Button title="login" onPress={ this.props.auth.login }/>
        <Button title="logout" onPress={ this.props.auth.logout }/>
      </View>
    )
  }
}

export default HomeScreen;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

贪恋

暂无简介

0 文章
0 评论
23 人气
更多

推荐作者

浪漫人生路

文章 0 评论 0

620vip

文章 0 评论 0

羞稚

文章 0 评论 0

走过海棠暮

文章 0 评论 0

你好刘可爱

文章 0 评论 0

陌若浮生

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文