2016-08-04 12 views
0

こんにちは私は、入力にテキストを入力して「追加」ボタンを押すと、ListItemという新しいコンポーネントを追加しようとしています。別のコンポーネントにコンポーネントを追加する反応

var Input = React.createClass({ 

    addListItem: function(){ 
    console.log(this.refs.input.value); 
    <ListItem>{this.refs.input.value}</ListItem> 

    }, 
     render: function(){ 
      return (
       <div> 
        <input ref="input" type="text"/> 
        <button onClick={this.addListItem}>Add</button> 
       </div> 
      ); 
     } 
    }); 

    var ListItem = React.createClass({ 

     render: function(){ 
      return (
       <li class="listItem"> 
        {this.props.value} 
       </li> 
      );   
     } 
    }); 

ReactDOM.render(<Input/>, container); 

問題は、コンポーネントが作成されていないんですが、私はまた、私は小道具が渡され取得されていないと考えli要素にいくつかのテキストを追加するだけで試してみましたが、それは問題ではありませんでした。

私はここで何を理解していませんか?

答えて

0

は、アイテムの状態を維持し、リストアイテムのレンダリングするためにそれを使用します。キャッチされない例外TypeError:

var Input = React.createClass({ 
getInitialState: function(){ 
    return { 
     items: [] 
    }; 
}, 
addListItem: function(){ 
    var items = this.state.items; 
    items.push(this.refs.input.value); 
    this.setState({ 
     items: items 
    }); 
}, 
render: function(){ 
    return (
     <div> 
      <input ref="input" type="text"/> 
      <button onClick={this.addListItem}>Add</button> 
      {this.getItems()} 
     </div> 
    ); 
}, 
getItems: function(){ 
    return this.state.items.map(function (i) { 
     return <ListItem>{i}</ListItem> 

    }); 
} 
}); 
+0

これは私にエラーを与えるthis.state.items.mapは機能 – Giedrius

+0

申し訳ありませんが、参照編集ではありません。 –

0
var Input = React.createClass({ 
getInitialState(){ 
    return { 
     list :[] 
    } 
}, 
addListItem: function(){ 
    let array = this.state.list; 
    array.push({value:this.refs.input.value}); 
    this.setState({list: array}); 

}, 
render: function(){ 
    let list = this.state.list; 
    console.log(list) 
    let item = list&&list.map((d,i)=>{ 
      return (
       <ListItem key={i}>{d.value}</ListItem> 
      ); 
     }); 
    return (
     <div> 
      <input ref="input" type="text"/> 
      <button onClick={this.addListItem}>Add</button> 
      <ul> 
       {item} 
      </ul> 
     </div> 
    ); 
} 
}); 

var ListItem = React.createClass({ 

render: function(){ 
    return (
     <li> 
      {this.props.children} 
     </li> 
    ); 
} 
}); 
+0

ここで何が起こっているのかに関する情報を提供してください。あなたが何をすべきかを人々に伝えれば、彼らの問題は解決されるかもしれません。なぜあなたはそれをしているのかを人々に伝えれば、何かを学ぶかもしれません。 – Randy

+0

このコードは質問に答えるかもしれませんが、* how *および/または* why *が問題を解決するという追加のコンテキストを提供すると、回答の長期的価値が向上します。 - [レビューの投稿](http://stackoverflow.com/review/low-quality-posts/13226774) –

+0

ええ、あなたは正しいです。私は次回にやります。 – liubintao

関連する問題