2016-09-27 2 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}/> 
     ); 
    } 

} 

Это полученное сообщение передается другим компонентом. Как я могу добавить полученное сообщение под другим в этой области? Любая помощь приветствуется.

+0

какой-либо рабочий код? jsfiddle или jsbin? –

+0

Есть несколько зависимостей, поэтому его трудно получить. В приведенном выше коде я просто добавляю полученное сообщение в значение области текста. Это, очевидно, заменит сообщение каждый раз. Так как это должно быть обработано? Как я могу добавить его? – mayooran

+0

как насчет использования 'div' под' textarea' и при сохранении отправки комбинированных данных? –

ответ

2

Используйте состояние textMessage.

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

В компонентеWillReceiveProps добавить в текст сообщение.

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

Bind to textMessage.

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

Я думаю, что есть проблема с этим. Это будет рекурсивно вставлять текст при каждом изменении. Кто-то, пожалуйста, подтвердите .. –

+0

@vijayst это не сработает, если одно и то же значение получено для опоры, не так ли? Я попытался удалить условие «if (nextProps.receivedMessage! == this.props.receivedMessage) {« но все равно не помогает. «ComponentWillReceiveProps» не вызывается при получении тех же значений. Что нужно сделать, чтобы справиться с этим? – mayooran

+0

оберните текст внутри объекта. 'received = {{сообщение: 'ваше сообщение'}}' – vijayst

Смежные вопросы