如何在 React JS 中使用聊天气泡制作像 UI 一样的聊天

Posted

技术标签:

【中文标题】如何在 React JS 中使用聊天气泡制作像 UI 一样的聊天【英文标题】:How to make chat like UI with chat bubbles in React JS 【发布时间】:2020-01-29 09:04:04 【问题描述】:

我在dummyData 中有一些 JSON 数据。我不确定如何根据direction 将聊天气泡放置在左右两侧。我正在使用 Material UI 和上下文 API。图片供参考。除了材质 UI,我不想使用任何库。

目前,每个聊天气泡都位于左侧。如何根据direction 定位气泡。到目前为止的代码(CodeSandbox):

    import React from 'react';
import makeStyles from '@material-ui/core/styles/makeStyles';

const useStyles = makeStyles(theme => (
    container: 
        bottom: 0,
        position: 'fixed'
    ,
    bubbleContainer: 
        width: '100%'
    ,
    bubble: 
        border: '0.5px solid black',
        borderRadius: '10px',
        margin: '5px',
        padding: '10px',
        display: 'inline-block'
    
));

const ChatLayout = () => 
    const classes = useStyles();
    const dummyData = [
        
            message: '1: This should be in left',
            direction: 'left'
        ,
        
            message: '2: This should be in right',
            direction: 'right'
        ,
        
            message: '3: This should be in left again',
            direction: 'left'
        
    ];

    const chatBubbles = dummyData.map((obj, i = 0) => (
        <div className=classes.bubbleContainer>
            <div key=i++ className=classes.bubble>
                <div className=classes.button>obj.message</div>
            </div>
        </div>
    ));
    return <div className=classes.container>chatBubbles</div>;
;

export default ChatLayout;

【问题讨论】:

我在你的codesanbox中做了一些css和逻辑更改。检查更新了一个:codesandbox.io/s/practical-faraday-zmkdm-updated-zmkdm,zmkdm.csb.app 这太完美了!请把它作为一个答案。如何将“bubbleContainer”对齐到底部?我尝试将“justify-content: flex-end !important”添加到“bubbleContainer”,但不起作用。 你的意思是你想让气泡从下到上开始吗? 是的。我曾使用“底部:0,位置:'固定'”来实现它。 现在检查,我已经更新了 style.css 【参考方案1】:

我在您的代码框中进行了一些 css 和逻辑更改。检查更新了一个: codesandbox.io/s/practical-faraday-zmkdm-updated-zmkdm zmkdm.csb.app

【讨论】:

【参考方案2】:

使用 react 和 material-ui 构建的自定义聊天组件 https://gist.github.com/muhammadawaisshaikh/542f9cff88caaed33e2b601142b7b0e0

【讨论】:

【参考方案3】:

您可以创建单独的聊天气泡 div 并应用 CSS。在您接收消息的位置将气泡 div 附加到您的用户列表中。

【讨论】:

正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于如何在 React JS 中使用聊天气泡制作像 UI 一样的聊天的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Javascript 中制作可拉伸的聊天气泡?

如何通过反应原生天才聊天设置气泡中显示的图像尺寸?

iOS绘制聊天气泡

react native中的聊天气泡以及timer封装成的发送验证码倒计时

如何在谷歌地图中创建一个带有气泡聊天背景的自定义标记,以及像调情地图这样的图像右上角的数字?

Android:制作聊天气泡点9图