2016-08-04 10 views
0

안녕하세요 저는 입력란에 텍스트를 입력하고 "추가"버튼을 누르면 ListItem이라는 새로운 구성 요소를 추가하려고합니다.다른 구성 요소에 구성 요소 추가하기 React

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); 

문제는 구성 요소가 생성되고 있지 않는다는 것입니다, 나는 또한 내가 소품이 전달되지 않아요 생각 리튬 요소에 텍스트를 추가하는 단지 시도,하지만 그건 문제가 아니었다 .

여기서는 무엇을 이해하지 못하겠습니까?

답변

0

항목 상태를 유지하고을 ListItem의 렌더링하는 데 사용

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

이 나에게 오류를 제공합니다 : catch되지 않은 형식 오류를 : 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

이 코드는 질문에 대답 할 수 있지만 문제 해결 방법에 대한 추가 컨텍스트를 제공하면 답변의 장기적인 가치가 향상됩니다. - [검토 중] (http://stackoverflow.com/review/low-quality-posts/13226774) –

+0

예, 맞습니다. 다음에 할 것입니다. – liubintao

관련 문제