2017-05-23 9 views
0

私はReactでチャットコンポーネントを構築していますが、Enterキーを押した後にtextarea要素をクリアする方法を理解できません。コンポーネントはステートレスなので、テキストエリアに関連付けられている小道具がないため、レンダリングされることはありません。ステートレスコンポーネントのReactでEnterキーを押してテキストエリアをクリアする

sendMessage(e) { 
    if (e.key === 'Enter') { 
    this.props.onKeyUp(e.target.value) 
    // I want to clear the textarea around here 
    } 
} 

render() { 
    return(
    ... 
    <textarea onKeyUp={this.sendMessage}></textarea> 
    ... 

答えて

0

ちょうど価値を持つあなたの仕事の後targetvalueをクリア。

e.target.value = ""; 

例:

class Test extends React.Component { 
 
    sendMessage(e) { 
 
    if (e.key === 'Enter') { 
 
     //this.props.onKeyUp(e.target.value) your work with value 
 
     // I want to clear the textarea around here 
 
     e.target.value = ""; 
 
    } 
 
    } 
 

 
    render() { 
 
    return <textarea onKeyUp = {this.sendMessage}></textarea> 
 
    } 
 

 
} 
 

 
ReactDOM.render(<Test/>, document.getElementById("root"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script> 
 
<div id="root"></div>

1
constructor(props){ 
this.state({value:""}) 
} 
sendMessage(e) { 
    if (e.key === 'Enter') { 
    this.props.onKeyUp(e.target.value) 
    // I want to clear the textarea around here 
    this.setState({value:""}) 
    } 
} 
handleChange=(e)=>{ 
    this.setState({value :e.target.value}) 
} 
render() { 
    return <textarea value={this.state.value} onChange={this.handleChange} onKeyUp = {this.sendMessage}></textarea> 
} 
関連する問題