2017-03-27 10 views
0

私はジュニア開発者です。 私は材料uiのTextfieldを使用していますが、問題があります。私は財産によって価値を得て、それは機能します!しかし、私はテキストフィールドを編集することはできませんので、私はのonChangeパラメータを使用したい、これが私のコードです:React:同じパラメータの州と小道

<TextField ref="docLibelle" value={this.props.lastuploadfile.content} onChange={this._handleTextFieldChange} 

そして、私の機能:

_handleTextFieldChange = (e:any) => { 
    this.setState({ 
     showReferenceIsRequired : false, 
     libelDoc: e.target.value 
    }); 
} 

そして、私はそれを試してみてください。

<TextField ref="docLibelle" value={this.state.libelDoc&& this.props.lastuploadfile.content} onChange={this._handleTextFieldChange} 

しかし、私はプロパティで値を取得し、テキストフィールドも編集できますか?

ありがとうございました!

+0

{this.state「のようにそれを使用することができるようにしたいので、 .libelDoc && this.props.lastuploadfile.content} trueまたはfalseを返します。では、何が効いていないのですか? – Ved

答えて

0

私は解決策がかなり簡単だと思います。あなたはtextField値を変更しても、あなたのcomponentDidMount方法

componentDidMount(){ 
    this.setState({libelDoc: this.props.lastuploadfile.content}) 
} 

で小道具を持つことができますだけSETSTATE値で初期化し、

<TextField ref="docLibelle" value={this.state.libelDoc} onChange={this._handleTextFieldChange} 
+0

ニース!あなたの答えをありがとう、それは動作します!それは簡単でしたが、私はそれについて考えていない、ありがとう:) –

0

問題は、あなたのtextfieldあるのみ読むことで、valueプロパティに、あなたがprops値を使用していて、onChangeメソッド内state値を更新する、です。

ソリューション

1.が親の値を更新するfunction親コンポーネントからfunctiontextfield使用のonChangeを渡し、それはこのように、動作します:

子コンポーネントで:

<TextField ref="docLibelle" value={this.props.lastuploadfile.content} onChange={this._handleTextFieldChange}/> 

_handleTextFieldChange = (e:any) => { 
    this.setState({ 
     showReferenceIsRequired : false, 
    }); 
    this.props.updateValue(e.target.value); 
} 

親コンポーネント:

updateValue(value){ 
    let = this.state.lastuploadfile; 
    lastuploadfile.content = value; 
    this.setState({lastuploadfile}) 
} 

2.ストアpropsstate変数の値やテキストフィールドの値プロパティでその変数を使用します。

ストアstate変数でtextfieldの初期値:

_handleTextFieldChange = (event, value) => { 
    this.setState({ 
     showReferenceIsRequired : false, 
     libelDoc: value 
    });   
} 
onChange方法で state変数こと

<TextField ref="docLibelle" value={this.state.libelDoc} onChange={this._handleTextFieldChange} 

更新:

constructor(props){ 
    super(props); 
    this.state = {libelDoc: props.lastuploadfile.content} 
} 

textfieldvalueプロパティでその変数を使用します

+0

あなたの答えをありがとう! –

関連する問題