Как передать сообщение от детей Вход в родительский чат в реагировать на родной чат - PullRequest
0 голосов
/ 23 января 2019

Я получил чат на основе response-native-gifted-chat, с дочерним компонентом InputBox, который имеет макет для ввода, и некоторыми кнопками плюс кнопка Send.Я передаю 2 функции для обработки onSend и камеры, но мне было интересно, как отправить текст, который я пишу на InputBox, родителю, который содержит GiftedChat.

GiftedChat обрабатывает массив сообщений,но как мне создать новое текстовое сообщение на основе ввода и кнопки onPress?

Вот мой текущий код:

On Parent

constructor(props) {
        super(props)

        this.handleCameraPress = this.handleCameraPress.bind(this);
        this.onSend = this.onSend.bind(this);

        this.state = {
            chatData: {},
            messages: []
        }
    }

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

handleCameraPress() {
    alert('camera tapped');
}

renderInputToolbar(props) {
    return ( <InputBox
            {...props}
            messages={ this.messages }
            onSend={ this.onSend }
            handleCameraPress={ this.handleCameraPress }
            containerStyle={ styles.inputToolbarStyle }
        />);
}

Вот какGiftedChat выглядит так:

<GiftedChat
     style={{ zIndex: 1 }}
     messages={this.state.messages}
     bottomOffset={Platform.OS === "ios" ? 335 : 0}
     maxComposerHeight={150}
     isAnimated={true}
     user={{ _id: 1 }}
     renderInputToolbar={ this.renderInputToolbar.bind(this) }
/>

На детей

render() {
   return (
      <View style={ styles.container }>
         <TouchableOpacity
            activeOpacity={0.6}
            style={styles.cameraButton}
            onPress={ this.props.handleCameraPress }>
            <Icon name='md-camera' style={ styles.cameraIcon } />
            </TouchableOpacity>
              <TextInput
                style={ styles.textInput }
                placeholder={i18n.t('chatInputPlaceholder')}
                returnKeyType={'send'}
                // onChangeText={ message => this.setState({ message })}
                // value={this.props.message}
                blurOnSubmit={false}
                ref={'chatInputRef'}
              />
         <Button
           onPress={ this.props.onSend }
           style={ styles.sendButton}>
           <Icon name='md-send' style={ styles.sendIcon } />
           </Button>
      </View>
   );
}

Я должен, я думаю, передать this.props.message на this.props.onSend?А затем объединить его с сообщениями родителей?

...