2016-12-20 17 views
1

Stephen GriderのUdemy "Modern React with Redux"コースでは、入力要素のvalueが、その値を設定するonChangeイベントによって変更される例が示されています。具体的には、この関数は次のようになります。React制御コンポーネントはどのように更新できますか?

onChange= function(event){ 
    this.setState({ term: event.target.value}) 
} 

と入力コンポーネントは次のようになります、私はevent.target.valueが私の目にするときに更新することができますどのように理解していない

<input value = {this.state.term} /> 

状態がevent.target.valueに「ハードコードさ」でありますつまり、コンポーネントがレンダリングされるときには、空の文字列です。したがって、state.term""で、入力のvalueがオーバーライドされ、state.termに設定されている場合、どのように更新できますか?

import React, { Component } from 'react'; 

class SearchBar extends Component { 
    constructor (props) { 
     super(props); 

     this.state = { term: '' }; 
    } 
    render() { 
     return(
      <div> 
       <input 
        value = {this.state.term} 
        onChange={event => this.setState({ term: event.target.value})} /> 
      </div> 
     ); 
    } 

} 

export default SearchBar; 

EDITは:基本的に私は私の質問は、まで来ると思う:event.target.valueとして<input>要素のvalue同じものということですか?

EDIT2:単語の参照渡しの意味でのJavascriptの「同じもの」、つまり両方が同じオブジェクトの同じ値を参照していますか?

答えて

2
  1. initial value = ''
  2. ユーザーは、あなたがevent.target.valueに基づいて状態を設定'r'
  3. を押します。新しいstate.term'r'
  4. です。コンポーネントの変更をトリガします。値が設定されているstate.termを使用しているため、valueevent.target.valueと同じだけになってしまうでしょう

    はいと無:あなたの入力の値は、あなたの編集に答えるためにthis.state.termまたは'r'

ではありませんevent.target.value

の値に

event.target.value =>決定=>state =>はそれくらい私が手=>input[value]

+0

を決定し、私は私のQUを推測しますestionは、 'event.target.value'によって' input.value'と全く同じ要素が指す要素ではありませんか?ビデオでは、「rを押すと、入力の値は変更されていません。コンポーネントが再表示されたときにのみ変更されます。 –

+1

それは正しいです。レンダリングでconsole.logを設定して、それを証明することができます。 – imjared

+0

次に、 'event.target.value'は' input [value] 'と同じデータを参照してはいけません。 –

関連する問題