2016-09-27 5 views
3

그래서 원래 내 응용 프로그램과 같이 index.ios.js의 구성 요소 벌금 가게를주고 있었다 :React 네이티브 NavigatorIOS 사용시 저장소에 구성 요소를 전달하는 방법은 무엇입니까?

class Laybium extends Component { 
    render() { 
    return (
     <Provider store={store}> 
     <NavigatorIOS 
      initialRoute={{ 
      component: Screen1, 
      title: 'Screen 1: Pick username' 
      }} 
      style={{flex: 1}} 
     /> 
     </Provider> 
    ); 
    } 
} 

허용 : 내가 너무 좋아 NavigatorIOS을 사용 그래서 내가 원하는 그러나

class Laybium extends Component { 
    render() { 
    return (
     <Provider store={store}> 
     <AudioPlayerPage /> 
     </Provider> 
    ); 
    } 
} 

좀 더 화면을 추가 할 수 내 응용 프로그램 -> 화면 1 -> 화면 2 -> 화면 3 -> AudioPlayerPage (내가 본 원래의 화면)로 이동합니다.

화면 1 -> 2 -> 3의 전환이 정상적으로 작동합니다. 하지만 이제는 내 구성 요소에 상점 및 소품을 제공하는 방법을 모르겠다 AudioPlayerPage? Provider 구성 요소 내에 NavigatorIOS 구성 요소를 래핑하는 것이 작동하지 않는 것 같습니다. 여기

내 구성 요소로 전환 내 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에게 자신을 사용하지 않은,하지만 반응 - 네이티브 라우터 플럭스를 사용하여, 나는 이런 내 구성 요소에서 dispatch 전화 : this.props.dispatch(someAction()). 상점 상태는 mapStateToProps 콜백을 통해 액세스합니다. 콜백을 받으려면 먼저 connect(mapStateToProps)(ComponentName)을 사용하여 구성 요소를 연결해야합니다.

+0

package.json의 반응 및 반응 기본 버전은 무엇입니까? 나는 "반응"으로 구축 할 수 없다 : "15.0.2", "반응 고유": "0.26.3", "반응 고유 라우터 유출량": "^ 3.35.0", 그리고^ –

+0

도없이 Xcode 버전 7.3.1을 가지고 있습니다. –

+0

저는 15.3.1의 반응을 보였고, 0.33.0의 반응을 보였고, react-native-router-flux^3.35.0을 사용하고 있습니다. 아직 iOS 용으로 안드로이드 만 사용해 보았습니다. – George

관련 문제