React Native Global状态

时间:2015-12-04 02:30:48

标签: ios state react-native

我有一个在我的某个页面上设置的状态变量,但我希望该状态值也可以在另一个页面上访问。不太清楚这是如何实现的。

例如在mainpage.ios.js

public enum Optional<Wrapped> : ExpressibleByNilLiteral {

    case none
    case some(Wrapped)

    public init(_ some: Wrapped) { self = .some(some) }

    public init(nilLiteral: ()) {
        self = .none
    }

    public var unsafelyUnwrapped: Wrapped {
        get {
            if let x = self {
                return x
            }
            _debugPreconditionFailure("unsafelyUnwrapped of nil optional")
        }
    }
}

然后在otherpage.ios.js上我想根据上一页已设置的值更新。通过选项卡栏选择不同的页面。所以基本上这个值在所有页面之间都是有效的全局。

2 个答案:

答案 0 :(得分:4)

要使用React Native在多个组件之间获得共享全局状态,您应该利用Flux实现。我个人更喜欢redux,但你可以使用你喜欢的任何一种。以下是使用React Native的redux示例:https://github.com/alinz/example-react-native-redux

答案 1 :(得分:2)

没关系,我发现了怎么做。对于任何不知道的人,我都是这样做的。据我所知,没有全局状态,你只需要将道具传递给每个页面组件。

因此,对于mainpage.ios.js,您需要otherpage.ios.js:

 var OtherPage = require('./otherpage');

然后当你使用元素时,你包含了传递道具:

    <OtherPage value={2}/>

或者

    <OtherPage value={this.state.value}/>

然后在otherpage.ios.js上你可以根据需要引用该变量:this.props.value。