2017-03-29 4 views
0

成分を作成しました。コードはここで見ることができます:http://codepen.io/anon/pen/zZmyyd別の反応成分から値を追加

class Add extends React.Component { 
    constructor() { 
    super(); 
    this.state = { 
     inItems: ["aaa", "bbb", "ccc", "ddd"] 
    } 
    this.state.items= this.state.inItems; 
    } 


    add() { 
     const currentItems = this.state.inItems, 
      newVal = this.refs.inputVal.value; 
     currentItems.push(newVal); 
     this.setState({ 
      items: currentItems, 
      value: newVal 
     }); 
    } 

    render() { 
    return (
     <div> 
     <input type="text" ref="inputVal"/> 
      <button type="button" onClick={this.add.bind(this)}>Add</button> 
      <List items= {this.state.items} /> 
     </div> 
    ) 
    } 
} 

class List extends React.Component { 
    render() { 
     return (
      <ul> 
       { 
        this.props.items.map(function(item) { 
         return <li key={item}>{item}</li> 
        }) 
       } 
      </ul> 
     ) 
    } 
} 


ReactDOM.render(
    <Add />, 
    document.getElementById('root') 
); 

私はAddnewsコンポーネントから値を追加することができますどのように?

class Addnew extends React.Component { 
    constructor() { 
     super(); 
    } 

    saveit() { 
     const currentItems = this.state.inItems, 
      newVal = this.refs.inputVal.value; 
     currentItems.push(newVal); 
     this.setState({ 
      items: currentItems, 
      value: newVal 
     }); 
    } 

    render() { 
     return <button type="button" onClick={this.saveit.bind(this)} ref="inputVal">Add Value from here</button> 
    } 
} 
+0

class Addnew extends React.Component { constructor() { super(); } saveit() { this.props.add(); } render() { return <button type="button" onClick={this.saveit.bind(this)} ref="inputVal">Add Value from here</button> } } 

ここで変更されたコードですもっと説明を追加できますか? –

+0

reduxなどを使用できます。 – FakeRainBrigand

答えて

1

あなたはコンポーネントを追加しますAddNewのコンポーネントをレンダリングする必要があります。その後、

そして小道具にAddNewのコンポーネントとして機能を追加渡す:

render() { 
    return (
     <div> 
     <input type="text" ref="inputVal"/> 
      <button type="button" onClick={this.add.bind(this)}>Add</button> 
     <List items= {this.state.items} /> 
     <Addnew add={this.add.bind(this)} /> 
    </div> 
) 
} 

そして、AddNewのコンポーネントで:http://codepen.io/anon/pen/OpBdpV?editors=0010#0

+0

ありがとうございました:+1: – olo

関連する問題