2017-11-28 6 views
0

RN Project에 Redux를 통합했습니다. 나는 버튼과 화면 사이를 탐색 할 수 있습니다,하지만 난 HeaderBackButton으로 돌아 가야 할 때를 말한다 :Redux를 사용하여 네이티브 핸들 백 헤드백에 응답

Github에서-리포 "정의되지 않은 함수 아니다"https://github.com/bayraktarhasan/React-Navigation-Redux-Globalization-Example.git

내 피드 구성 요소 :

class Feed extends Component { 
    static navigationOptions = { 
    title: 'Hello Ahmet', 
    headerLeft: <HeaderBackButton onPress={this.goBack()} />, 
    } 
    constructor(props) { 
    super(props); 
    this.goBack = this.goBack.bind(this); 
    } 

    goBack =() => { 
    this.props.navBack(); 
    } 

    render() { 
    return (

     <View style={styles.container}> 
     <Text>{I18n.t('feedComponent')}</Text> 
     <Button 
      title={I18n.t('back')} 
      onPress={this.goBack} 
     /> 
     </View> 
    ); 
    } 
} 

export default connect(null, { navBack, navToProfile })(Feed); 

감속기 :

import { NAVIGATE_BACK, NAVIGATE_PROFILE, NAVIGATE_FEED } from '../Actions/types'; 

const firstAction = AppNavigator.router.getActionForPathAndParams('Main'); 
const initialNavState = AppNavigator.router.getStateForAction(
    firstAction 
); 


function nav(state = initialNavState, action) { 
    console.log(action.type); 
    let nextState; 
    switch (action.type) { 
    case NAVIGATE_BACK: 
     nextState = AppNavigator.router.getStateForAction(
        NavigationActions.back(), 
        state 
       ); 
     break; 

답변

0

이 어둠 속에서 단지 슛이지만, GoBack을 정말 정의되어 있지 않습니다. 아마 시도 :

const goBack =() => { 
    this.props.navBack(); 
} 

이 매우 아이러니, 어제 같은 문제가 있었기 때문에. 여기에 게시물이 있습니다 How to properly assign a url as a prop to action creator

위의 링크에서 귀하의 경우 수행해야 할 일이 무엇인지 분명하지 않을 수 있습니다. 그러나 나는 내가 발견 한 것을 설명하려고 노력할 것이다 (나는 어떤 식 으로든 전문가가 아니다). 귀하의 코드는 텍스트 입력이나 날짜 선택 도구 또는 그 종류의 것에서 작동합니다. 이와 같이 :

<TextInput 
     label="Model" 
     placeholder="4020" 
     value={this.props.model} 
     onChangeText={value => this.props.entryUpdate({ prop: 'model', value })} 
/> 

텍스트 입력에는 이미 몇 개의 소품이 있습니다. 여기에 값을 할당하십시오

this.props.<whatever you want the specific object/prop to be called> 

버튼으로 실제 행동 이름을 지정해야합니다. 여기에는 실제 소품이 없습니다. 그래서, 그것은 정의되지 않은 것으로 돌아옵니다.

this.props.navBack(); 

그래서 어쩌면은 다음과 같습니다 : 그래서, 당신은 그냥 전에 소품에 대한 변수 이름을 선언하고 this.props에 할당해야

const goBack =() => { 
    const { back } = this.props 
    this.props.navBack({ back }); 
} 

그리고 귀하의 경우, 당신은해야 할 수도 있습니다 prop {back}에 대한 특정 값을 지정합니다. 그렇지 않으면 두 번째 인수도 정의되지 않았 음을 알려줍니다. 이 혼란보다 더 많은 도움이

https://github.com/jhen0409/react-native-debugger

희망 :

은 여기 소품 실제로 행동 작성자에게 전달되는 경우 당신이 볼 수 있습니다 멋진 디버거입니다. 행운을 빕니다!

+0

이것은 작동하지 않으며 같은 문제가 발생합니다 : "정의되지 않은 것은 객체가 아닙니다" –

+0

디버거를 사용하여 테스트 해 보겠습니다. 문제가 해결되기를 바랍니다. 하지만 당신의 대답을 주셔서 감사합니다 :) –