React+AntDesign实现类似Chatgpt交互界面

以下是一个基于React和Ant Design搭建的简单ChatGPT风格前端交互界面代码框架示例,该示例实现了基本的用户输入、发送请求以及展示回复的功能。假设后端有一个模拟接口来处理请求并返回回复。

  1. 项目初始化:

确保你已经安装了Node.js和npm。通过以下命令创建一个新的React项目:

npx create - react - app chat - ui

cd chat - ui

然后安装Ant Design:

npm install antd

  1. 代码实现:

• App.js:

import React, { useState } from'react';

import { Button, Input, List } from 'antd';

import 'antd/dist/antd.css';

const App = () => {

const [inputValue, setInputValue] = useState('');

const [chatList, setChatList] = useState([]);

const handleInputChange = (e) => {

setInputValue(e.target.value);

};

const handleSend = async () => {

if (inputValue.trim() === '') return;

// 模拟请求数据

const requestData = {

userInput: inputValue

};

setChatList([...chatList, { role: 'user', content: inputValue }]);

setInputValue('');

try {

// 模拟向后端发送请求,这里需要替换为真实的后端API地址

const response = await fetch('/api/chat', {

method: 'POST',

headers: {

'Content - Type': 'application/json'

},

body: JSON.stringify(requestData)

});

if (response.ok) {

const data = await response.json();

setChatList([...chatList, { role: 'assistant', content: data.reply }]);

} else {

setChatList([...chatList, { role: 'assistant', content: '请求失败,请稍后重试' }]);

}

} catch (error) {

setChatList([...chatList, { role: 'assistant', content: '网络错误,请检查网络' }]);

}

};

return (

<div style={ { padding: '20px' }}>

<List

dataSource={chatList}

renderItem={(item) => (

<List.Item>

<strong>{item.role === 'user'? '你' : 'AI'}</strong>: {item.content}

</List.Item>

)}

/>

<Input

placeholder="请输入问题"

value={inputValue}

onChange={handleInputChange}

onPressEnter={handleSend}

style={ { width: '80%', marginRight: '10px', display: 'inline - block' }}

/>

<Button type="primary" onClick={handleSend}>发送</Button>

</div>

);

};

export default App;

上述代码中:

• 使用useState钩子来管理输入框的值inputValue和对话列表chatList。

• handleInputChange函数用于更新输入框的值。

• handleSend函数在用户点击发送按钮或按下回车键时触发,它先将用户输入添加到对话列表,然后模拟向后端发送请求并处理响应,将后端回复也添加到对话列表。

• List组件用于展示对话历史,Input组件用于用户输入,Button组件用于发送请求。

请注意,上述代码中的/api/chat是模拟的后端API地址,实际应用中你需要将其替换为真实的与ChatGPT模型交互的后端接口地址。并且,真实场景下还需要处理更多的细节,如身份验证、请求超时等。

ChatGPT是OpenAI开发的语言模型,其本身并没有前端交互界面,这里为你假设设计一个类似语言模型交互界面的前端交互流程,以帮助你理解。

  1. 界面加载

• HTML 结构渲染:浏览器解析HTML文件,构建DOM树,确定页面布局结构,比如输入框、发送按钮、对话展示区域等基础元素的位置。

• CSS 样式应用:浏览器根据CSS规则,为各个HTML元素添加上对应的样式,像字体、颜色、间距等外观属性。

• JavaScript 脚本加载与初始化:浏览器加载JavaScript脚本文件,脚本开始执行初始化操作,例如获取DOM元素引用,绑定事件监听器等。

  1. 用户输入

• 输入事件监听:在输入框元素上,通过JavaScript添加input或keydown事件监听器,实时监听用户输入。

• 输入内容处理:用户输入时,输入框的值实时更新,前端可进行简单的输入校验,如限制输入长度、过滤特殊字符等。

  1. 发送请求

• 点击发送按钮或快捷键触发:用户点击发送按钮,或按下特定快捷键(如Enter键)时,触发发送请求的函数。

• 构建请求数据:将输入框中的内容作为请求数据,通常会包含用户的唯一标识、对话历史(如果有对话历史功能)等信息,按照后端接口要求的格式(如JSON)进行组装。

• 发送HTTP请求:使用fetch或XMLHttpRequest等技术,将构建好的请求数据发送到后端API接口。在请求过程中,可以显示加载状态,如在发送按钮上显示"正在发送",或者在对话展示区域显示加载动画,告知用户请求正在处理中。

  1. 接收响应

• 响应数据接收:后端处理完请求后返回响应数据,前端通过上述发送请求的机制接收数据。

• 响应解析:接收到的响应数据通常是JSON格式,使用JSON.parse()方法将其解析为JavaScript对象,方便后续处理。

  1. 显示回复

• 对话展示区域更新:解析后的回复数据,按照一定的格式(如HTML)插入到对话展示区域,一般是在已有对话内容的下方添加新的对话记录,展示用户输入和模型回复。

• 滚动到最新消息:为了保证用户能实时看到最新的对话内容,自动将对话展示区域的滚动条滚动到最底部。

  1. 错误处理

• 请求错误处理:如果在发送请求或接收响应过程中出现错误,如网络中断、后端服务故障等,捕获错误并向用户展示友好的错误提示信息,如"网络连接失败,请检查网络后重试" 。

• 响应数据异常处理:若接收到的响应数据格式不正确或包含错误信息,进行相应处理,例如显示错误原因,方便用户了解问题所在。

相关推荐
bin91531 小时前
DeepSeek 助力 Vue 开发:打造丝滑的复制到剪贴板(Copy to Clipboard)
前端·javascript·vue.js·ecmascript·deepseek
晴空万里藏片云2 小时前
elment Table多级表头固定列后,合计行错位显示问题解决
前端·javascript·vue.js
曦月合一2 小时前
html中iframe标签 隐藏滚动条
前端·html·iframe
奶球不是球2 小时前
el-button按钮的loading状态设置
前端·javascript
kidding7232 小时前
前端VUE3的面试题
前端·typescript·compositionapi·fragment·teleport·suspense
无责任此方_修行中4 小时前
每周见闻分享:杂谈AI取代程序员
javascript·资讯
Σίσυφος19004 小时前
halcon 条形码、二维码识别、opencv识别
前端·数据库
学代码的小前端4 小时前
0基础学前端-----CSS DAY13
前端·css
dorabighead5 小时前
JavaScript 高级程序设计 读书笔记(第三章)
开发语言·javascript·ecmascript
css趣多多6 小时前
案例自定义tabBar
前端