2016-10-12 14 views
0

私はドキュメントからreactjsを勉強しています。状態によって渡されたデータを送信するとき。例えば。react:未定義の 'data'プロパティを読み取ることができません

Cannot read property 'data' of undefined

私はthis.state = { data : []}getInitialState()を変更しよう:getInitialState()私はエラーを取得します。しかし、これは正しい方法ではありません。どうすれば修正できますか?

<!DOCTYPE html> 
 
    <html lang="en"> 
 
<head> 
 
    <meta charset="UTF-8"> 
 
    <title>Hello React</title> 
 
    <script src="http://cdnjs.cloudflare.com/ajax/libs/showdown/0.3.1/showdown.min.js"></script> 
 
    <script src="https://fbcdn-dragon-a.akamaihd.net/hphotos-ak-xpa1/t39.3284-6/11057105_1610731242494235_1148661094_n.js"></script> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script> 
 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.0/react.min.js"></script> 
 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.0/react-dom.min.js"></script> 
 
</head> 
 

 
    <body> 
 
    <div id="content"></div> 
 
    <script type="text/jsx"> 
 

 
     //Comment text 
 
     let converter = new Showdown.converter(); 
 
     let Comment = React.createClass({ 
 
      render(){ 
 
       let rawMarkup = converter.makeHtml(this.props.children.toString()) 
 
       return (
 
         <div className="comment"> 
 
          <h2 className="commentAuthor"> 
 
           { this.props.author } 
 
          </h2> 
 
          <span dangerouslySetInnerHTML={{__html: rawMarkup}}/> 
 
         </div> 
 
       ); 
 
      } 
 
     }); 
 

 
     //Comment list 
 
     let CommentList = React.createClass({ 
 
      render(){ 
 
       let commentNodes = this.props.data.map((comment, index) => { 
 
        return (
 
          <Comment author={comment.author} key={index}> 
 
           { comment.text } 
 
          </Comment> 
 
        ) 
 
       }); 
 
       return (
 
         <div className="commentList"> 
 
          { commentNodes } 
 
         </div> 
 
       ); 
 
      } 
 
     }); 
 

 

 
     //Comment form 
 
     let CommentForm = React.createClass({ 
 
      render(){ 
 
       return (
 
         <div className="commentForm"> 
 
          CommentForm !! 
 
         </div> 
 
       ); 
 
      } 
 
     }); 
 

 
     //Comment component 
 
     let CommentBox = React.createClass({ 
 
      getInitialState(){ 
 
       return { 
 
        data: [ 
 
         {author: "Pete Hunt", text: "This is one comment"}, 
 
         {author: "Jordan Walke", text: "This is *another* comment"} 
 
        ] 
 
       } 
 
      }, 
 
      render(){ 
 
       return (
 
         <div className="commentBox"> 
 
          <h1>Comments</h1> 
 
          <CommentList data={ this.state.data }/> 
 
          <CommentForm /> 
 
         </div> 
 
       ); 
 
      } 
 
     }); 
 

 
     
 
     React.render(
 
       <CommentBox data={this.state.data}/>, //<----[ERROR IS HERE Uncaught TypeError] 
 
       document.getElementById('content') 
 
     ); 
 
    </script> 
 
    </body> 
 
    </html>

答えて

1

状態はコンポーネントによって独立して処理されます。 Reactコンポーネントの以外のの状態にアクセスしようとしています。最初に小道具が必要ないときは、{this.state.data}を小道具として渡しています。あなたは完全にデータの小道具を削除することができるはずですし、あなたのコードはうまく動作します。

<CommentBox /> // get rid of data prop

+0

、それは非常にあなたに非常に多くの –

+0

問題ありませんがdetailed.thankされ、私のproblem.Your説明を解決するためだ、嬉しい私は助けることができます! –

関連する問題