2016-09-27 63 views
3

所以最初我的應用程序是給店裏分量罰款index.ios.js像這樣:在使用NavigatorIOS時,React Native如何將商店傳遞給Component?

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 - > AudioPlayerPage(我顯示的原始屏幕)。

屏幕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> 
    ); 
    } 
} 

回答

2

我沒有用NavigatorIOS自己,但使用反應本地路由器通量,我把從我的部件像這樣dispatchthis.props.dispatch(someAction())。至於商店的狀態,我通過mapStateToProps回調來訪問它。要接收回調,應首先使用connect(mapStateToProps)(ComponentName)連接組件。

+0

什麼版本的反應和react-native你有你package.json?我無法通過「反應」來構建:「15.0.2」,「react-native」:「0.26.3」,「react-native-router-flux」:「^ 3.35.0」,with和沒有^ –

+0

也我有Xcode版本7.3.1 –

+0

我正在使用反應15.3.1,react-native 0.33.0,並且react-native-router-flux^3.35.0。我還沒有嘗試過iOS,但只適用於Android。 – George

相關問題