2017-03-01 8 views
2

子コンポーネントに関数を渡そうとすると、その関数は未定義です。実際に私はクラスで直接実行することさえできません。タイプミスがあると思いますか?小道具に関数を渡すことは定義されていません

class FriendsPage extends Component { 
    constructor(props){ 
    super(props); 
    this.mylog = this.mylog.bind(this); 
    } 
    mylog(){ 
     console.log("test debug"); 
    } 
    renderItem(item) { 
     return (<User friend={item} key={item.id} mylog={this.mylog}/>); 
    } 

class User extends Component { 
    constructor(props){ 
    super(props); 
    } 
    render() { 
     this.props.mylog(); // <== This is undefined 
    ... 
    } 
+0

@Jaiいいえ、ユーザーがFriendsPageを拡張しません。 – Pankaj

答えて

0

正常に動作します。​​3210をpropmylog)と指定しないでレンダリングしようとすると、それは未定義です。

class FriendsPage extends React.Component { 
 
    constructor(props) { 
 
     super(props); 
 
     this.mylog = this.mylog.bind(this); 
 
    } 
 
    mylog() { 
 
     console.log("test debug"); 
 
    } 
 
    render() { 
 
     return (< User mylog = { 
 
      this.mylog 
 
     } 
 
     />); 
 
     } 
 
    } 
 
    class User extends React.Component { 
 
     constructor(props) { 
 
     super(props); 
 
     } 
 
     render() { 
 
     this.props.mylog(); 
 
     return <h1 > Hello < /h1>; 
 
     } 
 

 
    } 
 

 
    ReactDOM.render(< FriendsPage/> , document.getElementById('root'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script> 
 
<div id="root"></div>

+1

ありがとうございます。実際には私の問題は、 'render'関数を' render'関数でラップして、コンストラクタにバインドしたことです。何らかの理由で、うまくいった。 – Arkon

関連する問題