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. 错误处理

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

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

相关推荐
noravinsc1 小时前
python md5加密
前端·javascript·python
ac-er88881 小时前
Yii框架优化Web应用程序性能
开发语言·前端·php
cafehaus2 小时前
抛弃node和vscode,如何用记事本开发出一个完整的vue前端项目
前端·vue.js·vscode
HoneyMoose2 小时前
可以自己部署的微博 Mastodon
前端
国产化创客2 小时前
物联网网关Web服务器--CGI开发实例BMI计算
服务器·前端·物联网·web网关
微光无限2 小时前
Vue3 中使用组合式API和依赖注入实现自定义公共方法
前端·javascript·vue.js
智界工具库3 小时前
【探索前端技术之 React Three.js—— 简单的人脸动捕与 3D 模型表情同步应用】
前端·javascript·react.js
璇璇吴3 小时前
vue3 el-form表格滚动
javascript·vue3·elementplus
独泪了无痕3 小时前
研究 Day.js 及其在 Vue3 和 Vue 框架中的应用详解
前端·vue.js·element