将道具传递给场景并进行修改

时间:2015-11-18 09:54:47

标签: javascript reactjs react-native

使用React Native构建应用程序,各个场景都很好用,非常满意。

然而,现在我正在考虑介绍一些" global"例如,检查用户是否具有活动会话,如果是,则将其数据添加到共享(或传递)到应用程序其余部分的某个状态。

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

我已经准备好向<Navigator />添加道具,就像这样:

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

然后将其作为道具传递给<SomeScene navigator={navigator} />,但这感觉不对,我无法弄清楚如何修改navigator的道具(例如user属性更改)然后将这些更改过滤回主<Navigator />

从搜索周围我看到Flux和React Router提到了,但是找不到我试图这样做的例子,希望有人能指出我正确的方向。 / p>

提前致谢。

1 个答案:

答案 0 :(得分:0)

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

首先,您必须使用下面提到的命令

为此安装两个模块

npm安装事件下划线 - 保存

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();