2016-09-27 16 views
2

私はテキスト領域を作成する次のコードを持っています。React JSで作成したテキスト領域にテキストを追加するには?

interface IReceiverProps { 
    receivedMessage: string; 
    topic: string; 
} 

export default class Receiver extends React.Component<IReceiverProps, {}> { 

    render() { 
     var textAreaStyle = { 
      width: 1300, 
      height: 450, 
      border: '3px solid #cccccc', 
      padding: '5px', 
      fontFamily: 'Tahoma, sans-serif', 
      overflow: 'auto', 
      marginLeft: '10px' 
     } 
     return (
      <textarea style={textAreaStyle} value={this.props.receivedMessage}/> 
     ); 
    } 

} 

この受信メッセージは別のコンポーネントによって渡されます。このテキスト領域にreceivedMessageを別のメッセージの下に追加するにはどうすればよいですか?どんな助けでも大歓迎です。

+0

一部の作業コードですか? jsfiddleまたはjsbin? –

+0

依存関係がほとんどないので、そこに取得するのは難しいです。上のコードでは、受信したメッセージをテキスト領域の値に追加するだけです。これは明らかに毎回メッセージを置き換えます。だからこれをどのように扱うべきですか?どうすれば追加できますか? – mayooran

+0

'textarea'の下で' div'を使う方法と、送信された合成データを保存する方法はありますか? –

答えて

2

textMessageという状態を使用します。

constructor(props) { 
    super(props); 
    this.state = { 
    textMessage: props.receivedMessage 
    }; 
} 

で、componentWillReceivePropsにtextMessageを追加します。

componentWillReceiveProps(nextProps) { 
    if (nextProps.receivedMessage !== this.props.receivedMessage) { 
    this.setState({ 
     textMessage: `${this.state.textMessage}\n{nextProps.receivedMessage}` 
    }); 
    } 
} 

テキストメッセージにバインドします。

<textarea style={textAreaStyle} value={this.state.textMessage} /> 
+0

これに問題があると思います。これは、すべての変更にテキストを再帰的に挿入します。誰かが確認してください。 –

+0

@vijaystこれは、同じ値が小道具のために受け取られた場合、これはうまくいかないでしょうか? if(nextProps.receivedMessage!== this.props.receivedMessage){"しかし、まだ助けていない条件を削除しようとしました。同じ値を受け取った場合、「componentWillReceiveProps」は呼び出されません。これに対処するために何をすべきか? – mayooran

+0

オブジェクト内にテキストをラップします。 'received = {{message: 'あなたのメッセージ'}}' – vijayst

関連する問題