2017-11-12 3 views
3

나는 을 포함하고 있습니다. 버튼을 클릭하면 AboutUs.js을 표시하고 싶습니다. HomePage.js이 올바르게 표시되지만 버튼을 클릭하면 다음 오류가 표시됩니다. this.props.onPress는 기능이 아닙니다. 제가 재사용 컴포넌트 Button.js가 그런this.props.onPress는 함수가 아닙니다.

import React, { Component } from 'react'; 
import { StackNavigator } from 'react-navigation'; 
import HomePage from './HomePage'; 
import AboutUs from './AboutUs'; 


const App = StackNavigator({ 
    HomePage: { 
     screen: HomePage, 
     navigationOptions: { 
      header:() => null 
     } 
    }, 
    AboutUs: { 
     screen: AboutUs, 
     navigationOptions: { 
      header:() => null 
     } 
    } 
}); 

export default App; 

App.js

('this.props.onPress (E)'에 'this.props.onPress'은 개체의 인스턴스)

import React from 'react'; 
import { Text, TouchableOpacity } from 'react-native'; 

const Button = ({ onPress, children }) => { 
    return (
     <TouchableOpacity onPress={onPress}> 
      <Text>{children}</Text> 
     </TouchableOpacity> 
    ); 
}; 

export { Button }; 

HomePage.js Button 구성 요소를 렌더링합니다. 내가 그것을 누를 때 나는 당신이 대신 기능 심판 내부 { name: 'About Us' }을 혼합처럼

import React, { Component } from 'react'; 
import { View, Text } from 'react-native'; 
import { Button } from './Button.js'; 
import AboutUs from './AboutUs'; 

class HomePage extends Component{ 

    render() { 
    const { navigate } = this.props.navigation; 
    return(
     <View> 
     <Button 
      onPress={() => navigate('AboutUs'), { name: 'About Us' }} 
      >About Us</Button> 
     </View> 
    ) 
    } 
} 

export default HomePage; 

AboutUs.js

import React, { Component } from 'react'; 
import { Text, View } from 'react-native'; 

class AboutUs extends Component { 
    render() { 
     return (
     <View> 
      <Text>About us!</Text> 
     </View> 
     ); 
    } 
} 

export default AboutUs; 
+0

당신은 무엇을 보내려고합니까 여기? ', {name :'About Us '} 부분이 불필요한 것 같습니다 – sventschui

+0

이것은 유효한 함수 참조가 아닙니다'onPress = {(AboutUs'), {name : 'About Us'}} {name : 'About Us'}는 {title : navigation.state}에서 참조됩니다. {name : 'About Us'}, {name : 'About Us'}} ' –

+0

{name :'About Us '}는 페이지의 헤더 일 것입니다. .params.name' 오류는 'this.props.onPress (e)'에서 'this.props.onPress'가 Object'의 인스턴스라고 더합니다. –

답변

5

이 유효한 함수 참조

onPress={() => navigate('AboutUs'), { name: 'About Us' }} 

없는 것 같습니다 위에서 언급 한 오류를 얻을 의 보조로 Button