使用react-navigation時,單頁面設置navigationOptions中,進行Static中調用方法,不能像以下設置
onPress = {()=>this.clickFinishButton()}
export default class extends Component { static navigationOptions = ({ navigation, screenProps }) => ({ headerTitle: 'List實現多選', headerTitleStyle: { color: 'white' }, headerStyle: { backgroundColor: Color.kMainColor // 設置導航欄的背景顏色,headerTintColor設置無效 }, headerRight:( <NavigationItem title='完成' // 這里注意: static里面不能使用this調用方法,出現clickFinishButton is not function // 參考博客: http://www.jianshu.com/p/2f575cc35780 // onPress={()=>navigation.state.params.navigatePress()} onPress = {()=>this.clickFinishButton()} /> ) });
解決方法:
export default class extends Component { static navigationOptions = ({ navigation, screenProps }) => ({ headerTitle: 'List實現多選', headerTitleStyle: { color: 'white' }, headerStyle: { backgroundColor: Color.kMainColor // 設置導航欄的背景顏色,headerTintColor設置無效 }, headerRight:( <NavigationItem title='完成' // 這里注意: static里面不能使用this調用方法,出現clickFinishButton is not function // 參考博客: http://www.jianshu.com/p/2f575cc35780 onPress={()=>navigation.state.params.navigatePress()} // onPress = {()=>this.clickFinishButton()} /> ) });
componentDidMount(){ // 處理數據源 this.handlerDataSource(); this.props.navigation.setParams({navigatePress:this.clickFinishButton}) }
// 點擊完成按鈕 clickFinishButton = ()=> { alert('哈哈'); // let data = this.state.dataArr; // let selectResultArr = []; // for (var index in data) { // var element = object[index]; // if (element.isSelected) { // selectResultArr.push(element); // } // } // alert(selectResultArr.length); }