原先我的应用在 index.ios.js
中可以正常向组件提供 store,代码如下:
class Laybium extends Component {
render() {
return (
<Provider store={store}>
<AudioPlayerPage />
</Provider>
);
}
}
然而,我想添加一些更多的屏幕,所以我使用了NavigatorIOS
,如下所示:
class Laybium extends Component {
render() {
return (
<Provider store={store}>
<NavigatorIOS
initialRoute={{
component: Screen1,
title: 'Screen 1: Pick username'
}}
style={{flex: 1}}
/>
</Provider>
);
}
}
这使得我的应用能够前往 -> 屏幕1 -> 屏幕2 -> 屏幕3 -> 音频播放页面(原始页面我展示)。
从屏幕1 -> 2 -> 3的转换正常工作。但现在我不知道如何为我的组件“AudioPlayerPage”提供存储和道具。 因为将“NavigatorIOS”组件包装在“Provider”组件中似乎没有起作用。
这是我的Screen3.js,它转换到我的组件“AudioPlayerPage”
class Screen3 extends Component {
static propTypes = {
navigator: PropTypes.object.isRequired
}
constructor(props, context) {
super(props, context);
this._onForward = this._onForward.bind(this);
}
_onForward() {
this.props.navigator.push({
component: AudioPlayerPage,
title: 'AudioPlayer: play synced song'
// TODO: pass store
});
}
render() {
return (
<View style={styles.container}>
<Text style={styles.text}>Screen3</Text>
<TouchableHighlight style={styles.button}
onPress={this._onForward}
underlayColor='#99d9f4'>
<Text style={styles.buttonText}>Go to AudioPlayerPage</Text>
</TouchableHighlight>
</View>
);
}
}