Как я могу обработать щелчок как обычное сообщение в реагирующем нативном одаренном чате?

Я ссылаюсь на код, который здесь:

https://snack.expo.io/@xcarpentier/gifted-chat

В соответствии с кодом, когда кто-то нажимает:

#awesome

оповещение сработает из-за:

onPress: props => alert(`press on ${props}`),

Я хотел бы, чтобы пресса отправила «Hello world» на ввод, как если бы пользователь просто набрал сообщение, а затем нажмите клавишу ввода.

Кажется, мне нужно будет отправить «Hello world» в эту функцию:

  onSend(messages = []) {
    this.setState((previousState) => ({
      messages: GiftedChat.append(previousState.messages, messages),
    }));
  }

но я не уверен, как это сделать.

Как заставить прессу работать как обычный чат?


person Hoa    schedule 02.06.2018    source источник


Ответы (2)


В GiftedChat есть text prop, который управляет вводом текста. Вы можете использовать эту опору для управления текстом ввода.

Если вы решите указать реквизит text, GiftedChat больше не будет управлять своим собственным внутренним состоянием текста и будет полностью полагаться на ваш реквизит. Это отлично подходит для использования такого инструмента, как Redux, но вам нужно будет сделать еще один шаг: просто реализовать onInputTextChanged для получения событий ввода и сброса событий (например, для очистки текста при отправке).

Образец

<GiftedChat
  text={this.state.inputText}
  onInputTextChanged={text => this.setState({inputText: text})}
  /* ... */
/>
person bennygenel    schedule 02.06.2018
comment
Спасибо. Итак, я добавил это: onPress: text =› this.setState({inputText: Hello world}), который устанавливает текст. Есть ли простой способ запустить команду отправки после этого? - person Hoa; 02.06.2018
comment
Спасибо за вашу помощь. Я думаю, что здесь я близок: snack.expo.io/ryp0wggxQ, но когда я внесу последние изменения здесь : snack.expo.io/HJu7_exgX Я получаю сообщение об ошибке. Есть идеи, почему? - person Hoa; 02.06.2018
comment
@ Хоа, вы не назначили пользовательскую кнопку чату для одаренных, как я описал в своем ответе. this.sendRef не определено - person bennygenel; 02.06.2018
comment
Устройство: (127:20) undefined не является объектом (оценка '_this.sendRef.props') - person Hoa; 02.06.2018
comment
Я прошел построчно, и все здесь: snack.expo.io/Hy08qegx7, но я все еще получаю: Устройство: (134:20) undefined не является объектом (оценка '_this.sendRef.props') - person Hoa; 02.06.2018
comment
@Hoa mybad .. Я только что увидел, что компонент отправки из GiftedChat не применяет ссылку, которую мы определяем. Вам нужно создать кнопку самостоятельно. Просто скопируйте содержимое кнопки и добавьте ссылку. - person bennygenel; 02.06.2018

Вы можете достичь функциональности без необходимости имитировать нажатие кнопки:

https://snack.expo.io/ryjHSZle7

person Hoa    schedule 02.06.2018