2017-10-22 3 views
1

내 네이티브 네이티브 앱에서 반응 내비게이션을 사용하고 있는데, 사용자가 앱의 오른쪽 상단에있는 저장 버튼을 클릭하면 onSavePress() 함수를 호출하려고합니다.반응 네비게이션에서 this.props에 액세스하는 방법?

하지만 onSavePress 함수를 호출하려고하면 내 네비게이션 애플리케이션에서 정적 네비게이션 함수 내부에서 그 함수를 호출하는 것과 같은 문제가 발생합니다.

class TheFormScreen extends Component { 

    constructor(props) 
    { 
    super(props); 
    this.state = { 
     visible: true 
     }; 
    } 

    state = { 
     isReady: false, 
    }; 


static navigationOptions = ({ navigation }) => ({ 
    title: `${navigation.state.params.item.a1}`, 
    tabBarIcon: ({ tintColor }) => { 
      return <Icon name="phone" size={30} color={tintColor} />; 
    }, 
    headerRight: (
     <Btn 
     title='Done-' 
     onPress={() => { console.log(' on Press done on line 73 Form--Screen this.props=', this.props); navigation.goBack() } 
     } 
     /> 
    ), 
    }); 

onDecline(){ 
    // console.log(' onDecline clicked'); 
    this.setState ({ showModal : false }); 
} 



} 
onDeleteProperty() { 
    // console.log(' onDelete clicked'); 

} 


onSavePress(){ 
    this.onClickToaster(); 
    console.log('101 - on click onSavePress '); 
    const { a1, a2 } = this.props; 

    this.props.propertySave({ a1, a2 }); 
} 
+0

정적 블록에서는이를 수행 할 수 없습니다. 당신이 그것을 이해할 수 있도록 정적 키워드에 대해 읽어보십시오. 또한 질문에 대답하려면 https://github.com/react-community/react-navigation/issues/145 – vonovak

답변

0

그래서,이 모든 코드 광고 infoSave 단지 명확 조각 아니 어디 onSavePress도 없다 :

여기에 아래의 코드입니다.

문제가 this.props가 정의되지 않았거나 이와 비슷한 것으로 가정합니다.

onSavePress =() => { 
    this.onClickToaster('Saving the info....', 'top' , DURATION.LENGTH_LONG, true); 
    const { a1, a2 } = this.props; 
    this.props.infoSave({ a1, a2 }); 
} 

이 편집 :

당신이 의미하는 경우, 당신은 화살표 함수로 기능 변경이 바인딩 할 수 있습니다?

headerRight: (
    <Btn 
    title='Save' 
    onPress={() => { this.onSavePress(); navigation.goBack() } 
    } 
    /> 
), 
+0

을보십시오. 따라서 반응 탐색의 오른쪽 상단에서 onSavePress 함수를 호출하는 방법에 대한 질문 ? –

+0

내 편집을 참조하십시오. 당신이 분명히 많은 질문을 던지기 때문에 혼란 스럽지만. 이 모든 코드가 같은 클래스에 있습니까? 같은 파일? 왜 작동하지 않습니까? 더 많은 정보를 추가 할 수 있다면 쉽게 도움이 될 것입니다 – sfratini

+0

예이 모든 것은 같은 학급에 있습니다. –