如何使用渲染操作在 React-native-Gifted-chat 中发送图像/视频和语音消息?

Posted

技术标签:

【中文标题】如何使用渲染操作在 React-native-Gifted-chat 中发送图像/视频和语音消息?【英文标题】:How can I send images/video and voice messages in React-native-Gifted-chat using render actions? 【发布时间】:2020-11-28 13:06:16 【问题描述】:

我想在使用 React-native-gifted-chat 和 Firebase 开发的聊天应用程序中发送图像/视频,我如何为他们创建操作并调用该操作以在 firebase 中上传并发送图像/视频?

这是我的代码。

handleSendImage = () => 
    console.log("handleSendImage");
  ;
  renderActions(props) 
    return (
      <Actions
        ...props
        // containerStyle=
        //   width: 70,
        // 
        icon=() => (
          <Icon
            name="camera"
            size=30
            color=colors.btnBg
            font="FontAwesome"
            onPress=this.handleSendImage
          />
        )
        onSend=(args) => console.log(args)
      />
    );
  

      

<GiftedChat
            placeholder="Hey!"
            alwaysShowSend
            messages=messages
            onSend=(newMessage) => this.onSend(this.chatID(), newMessage)
            renderInputToolbar=this.renderInputToolbar
            renderActions=this.renderActions
            user=
              _id: senderId,
              name: senderName,
            
          />

如何点击特定动作并分别发送语音和图像/视频?

【问题讨论】:

你找到解决办法了吗? 是的,@OliverD,能够使用 Actions 进行开发。 @JaydeepPithwa 你能在这里发布解决方案吗? 尝试将您的操作添加到renderActions 【参考方案1】:

天才聊天本身具有 renderActions 属性,因此只需创建自定义操作即可上传图像/视频和语音。

在这里,我附上了用于上传 PDF/Doc 文件等文档的代码。

要上传图片/视频,您只需要更改该包,而不是我使用的文档选择器

const renderActions = (props) => 
    return (
        <Actions
            ...props
            options=
                ['Document']: async (props) => 
                    try 
                        const result = await DocumentPicker.pick(
                            type: [DocumentPicker.types.pdf],
                        );
                       console.log("image file",result)
                     catch (e) 
                        if (DocumentPicker.isCancel(e)) 
                            console.log("User cancelled!")
                         else 
                            throw e;
                        
                    

                ,
                Cancel: (props) =>  console.log("Cancel") 
            
            onSend=args => console.log(args)
        />
    )
;

天才聊天组件


                   <GiftedChat
                    messages=messages
                    showAvatarForEveryMessage=true
                    onSend=messages => onSend(messages)
                    renderActions=() => renderActions()
                    user=
                        _id: 2,
                        name: 'React Native',
                        avatar: 'https://placeimg.com/140/140/any',
                    
                    renderCustomView=renderCustomView
                />
 

【讨论】:

以上是关于如何使用渲染操作在 React-native-Gifted-chat 中发送图像/视频和语音消息?的主要内容,如果未能解决你的问题,请参考以下文章

如何在OpenGL中实现灰度渲染?

如何根据用户的操作系统有条件地渲染 ReactJS 内容

如何在 Vue 2 渲染功能中使用插槽?

如何将GLSurfaceView渲染保存到文件?

django - 如何渲染我在网页中随处使用的模板?

如何成功传递一个 Json 来在 Django 中渲染和操作它?