【问题标题】:Pass props down to scenes and modify将道具传递给场景并进行修改
【发布时间】:2015-11-18 09:54:47
【问题描述】:

使用 React Native 构建应用,各个场景运行良好,非常满意。

但是现在我正在考虑引入一些“全局”状态,例如检查用户是否有活动会话,如果有,则将他们的数据添加到共享(或传递)到其余部分的状态应用程序。

我只是不是 100% 将这段代码放在哪里以及将这些数据存储在哪里,以便各个场景可以访问(同样重要的是 - 修改)这些数据?

我尝试向<Navigator /> 添加一个道具,如下所示:

<Navigator user={this.getUser()} />

然后将其作为道具传递给&lt;SomeScene navigator={navigator} /&gt;,但这感觉不对,我不知道如何修改navigator 的道具(比如user 属性更改)然后有这些更改过滤回主要的&lt;Navigator /&gt;

通过搜索,我看到提到了 Flux 和 React Router,但找不到我正在尝试这样做的示例,希望有人能指出我正确的方向。

提前致谢。

【问题讨论】:

  • 你在你的APP中使用了Flux吗?
  • @DhavalPatel 还没有——就像我说的那样,我找不到我正在尝试做的例子,如果你有,请分享!
  • 所以看看我的回答我会回答你的问题
  • @DhavalPatel 好的,谢谢。
  • 迈克:对你的问题有用吗?

标签: javascript reactjs react-native


【解决方案1】:

这可以使用Flux 来实现,让我用 Flux 来解释一下,Flux 是具有 Store 的模式,你可以使用 Store 来存储变量值在这里我涵盖了你想要存储用户信息和想要的示例访问每个组件,因为您的商店包含两种方法,一种是设置用户信息,第二种是获取用户信息。

首先你必须使用下面提到的命令安装这两个模块

npm install events 下划线 --save

var EventEmitter = require('events').EventEmitter;
var _ = require('underscore');

var _user;

// Extend UserStore with EventEmitter to add eventing capabilities
var UserStore = _.extend({}, EventEmitter.prototype, {


    getUserInfo: function() {
        return _user;
    },
    setUserInfo: function(user) {
        _user=user;
    }
});
module.exports=UserStore;

现在你可以从你的任何组件中使用它这个商店,比如

var UserStore=require('./UserStore');

并从应用程序中的任何位置设置和获取 userinfor

UserStore.setUserInfo(user);
var user=UserStore.getUserInfo();

【讨论】:

  • 这是npm install events underscore --save刚刚安装的吗?
  • 所以每次我需要获取用户信息时,我都会调用UserStore.getUserInfo(),而不是this.setState({ user: UserStore.getUserInfo() });
  • 您也可以将其设置为 State 并且您可以访问任何需要的地方,这取决于您想在您的应用中应用哪种方法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 2017-10-03
  • 1970-01-01
  • 2020-10-23
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多