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

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

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

相关推荐
万少11 分钟前
HarmonyOS 开发必会 5 种 Builder 详解
前端·harmonyos
橙序员小站2 小时前
Agent Skill 是什么?一文讲透 Agent Skill 的设计与实现
前端·后端
炫饭第一名5 小时前
速通Canvas指北🦮——基础入门篇
前端·javascript·程序员
王晓枫5 小时前
flutter接入三方库运行报错:Error running pod install
前端·flutter
符方昊5 小时前
React 19 对比 React 16 新特性解析
前端·react.js
ssshooter5 小时前
又被 Safari 差异坑了:textContent 拿到的值居然没换行?
前端
曲折5 小时前
Cesium-气象要素PNG色斑图叠加
前端·cesium
Forever7_6 小时前
Electron 淘汰!新的桌面端框架 更强大、更轻量化
前端·vue.js
不会敲代码16 小时前
前端组件化样式隔离实战:React CSS Modules、styled-components 与 Vue scoped 对比
css·vue.js·react.js
Angelial6 小时前
Vue3 嵌套路由 KeepAlive:动态缓存与反向配置方案
前端·vue.js