
经过一周快速研发,最新版react19.2+zustand5集成deepseek-v4-flash实战网页版ai流式对话助手。
[自研react19.2+deepseek-v4+openai智能流式ai模板](https://cloud.tencent.com/developer/article/2712737)


react19-webai支持亮色+暗黑主题、代码高亮/复制代码、深度思考链、katex公式、mermaid渲染、echarts图表展示,本地存储会话等功能。







基于vite8.0构建创建react19项目模板,采用react hooks语法编码页面。



替换下项目根目录下.env里的apikey,即可体验ai流式对话功能。

import { HashRouter } from 'react-router-dom'
import { appStore } from '@/store/app'
// 引入路由配置
import Router from './router'
function App() {
const appState = appStore()
appState.updateTheme()
return (
<>
<HashRouter>
<Router />
</HashRouter>
</>
)
}
export default App


react-router v7配置
import { lazy, Suspense } from 'react'
import { useRoutes, Navigate, Outlet } from 'react-router-dom'
import { Spin } from '@arco-design/web-react'
import { appStore } from '@/store/app'
// 引入路由页面
import Login from '@views/auth/login'
import Register from '@views/auth/register'
const Index = lazy(() => import('@views/index'))
const Aihub = lazy(() => import('@views/aihub'))
const Setting = lazy(() => import('@views/setting'))
const Error404 = lazy(() => import('@views/error/404'))
import Sidebar from '@/layouts/sidebar'
// 加载提示
const SpinLoading = () => {
return <Spin tip='loading...' style={{width: '100%'}} />
}
// 延迟加载
const Lazyload = (children) => {
return <Suspense fallback={<SpinLoading />}>{children}</Suspense>
}
// 路由鉴权验证
const RouterAuth = ({children}) => {
const appState = appStore()
return appState.isLogged ? (children) : (<Navigate to='/login' replace />)
}
// 路由占位模板
const RouterLayout = () => (
<div className='rai__container'>
<div className='rai__layout flexbox flex-col'>
<div className='rai__layout-body flex1 flexbox'>
{/* 侧边栏 */}
<Sidebar />
<div className='rai__layout-main flex1'>
{ Lazyload(<Outlet />) }
</div>
</div>
</div>
</div>
)
const routes = [
{
path: '/',
element: <RouterAuth><RouterLayout /></RouterAuth>,
children: [
// 首页
{ index: true, element: <Index /> },
// ai导航
{ path: '/aihub', element: <Aihub /> },
// 我的模块
{ path: '/setting', element: <Setting /> },
// 错误模块
{ path: '*', element: <Error404 /> },
]
},
// 登录/注册
{ path: '/login', element: <Login /> },
{ path: '/register', element: <Register /> },
]侧边栏模板

return (
<>
<div className={clsx('rai__sidebar', {'collapsed': collapsed})}>
<Button className='rai__sidebar-collapse' shape='circle' onClick={handleCollapse}><div className='flex-c'><IconLayout style={{fontSize: 16}} /></div></Button>
<aside className='rai__sidebar-aside flex1 flexbox flex-col'>
<div className='rai__aside-head'>
<div className='logo flexbox flex-alignc' onClick={()=>navigate('/')}><i className='iconfont ai-deepseek' style={{fontSize: 28}}></i><span className='fw-700 ff-ar' style={{fontSize: 16}}>react19-webseek</span></div>
<div className='btn-create flex-c' onClick={handleCreate}><i className='iconfont ai-newchat'></i>新建对话<span className='shortkey'>(Ctrl+K)</span></div>
</div>
<div className='rai__aside-navwrap flexbox flex-col'>
<div className={clsx('rai__aside-navitem', {'active': pathname == '/aihub'})} onClick={()=>navigate('/aihub')}><span className='icon'><IconCompass /></span><div className='title'>AI 导航</div></div>
<Dropdown
position='rt'
droplist={
<Menu style={{minWidth: 150, marginLeft: 10}}>
<Menu.Item><div className='flexbox flex-alignc' style={{gap: 5}}><i className='iconfont ai-aisousou'></i>AI搜索</div></Menu.Item>
<Menu.Item><div className='flexbox flex-alignc' style={{gap: 5}}><i className='iconfont ai-fanyi'></i>快速翻译</div></Menu.Item>
<Menu.Item><div className='flexbox flex-alignc' style={{gap: 5}}><i className='iconfont ai-xiezuo'></i>帮我写作</div></Menu.Item>
<Menu.Item><div className='flexbox flex-alignc' style={{gap: 5}}><i className='iconfont ai-tuxiang'></i>图像生成</div></Menu.Item>
<Menu.Item><div className='flexbox flex-alignc' style={{gap: 5}}><i className='iconfont ai-aicode'></i>AI编程</div></Menu.Item>
</Menu>
}
>
<div className='rai__aside-navitem'><span className='icon'><IconCommand /></span><div className='title'>AI 技能</div><IconRight /></div>
</Dropdown>
</div>
{/* 对话列表 */}
<div className='rai__aside-sessions flex1 flexbox flex-col'>
<div className='rai__aside-navwrap' style={{paddingTop: 0, paddingBottom: 0}}>
<div className='rai__aside-navitem plain'><span className='icon'><IconHistory /></span><div className='title'>最近对话</div><i className='clean iconfont ai-clean' onClick={handleClean}></i></div>
</div>
<div className='rai__sessionwrap flex1'>
<Rscroll size={5}>
{sessions.length ?
<ul className='rai__sessionlist'>
...
</ul>
:
<Empty icon={<IconEmpty style={{fontSize: 32}} />} description='暂无对话' />
}
</Rscroll>
</div>
</div>
{/* 底部 */}
<div className='rai__aside-navwrap'>
...
</div>
</aside>
</div>
</>
)























react19对接deepseek api实现流式输出多轮对话。
const completion = await openai.chat.completions.create({
// 多轮会话
messages: multiConversation ? historySession() : [{role: 'user', content: editorValue}],
// 对话模型(快速模式deepseek-v4-flash 专家模式deepseek-v4-pro)
model: 'deepseek-v4-flash',
// 是否深度思考
thinking: {'type': thinkingEnabled ? 'enabled' : 'disabled'},
stream: true, // 流式输出
max_tokens: 8192, // 限制一次请求中模型生成 completion 的最大 token 数(默认使用 4096)
temperature: 0.4, // 严谨采样 越低越严谨(默认1)
})
2026原创自研React19+Vite8+ArcoDesign+Zustand中后台管理系统框架模板
升级款vite8+vue3.5+arcoDesign网页端webOS桌面框架
自研Vite8+NaiveUI+Vue3+Echarts后台管理系统
uni-app+mphtml快速集成DeepSeek-V4智能ai应用
最新款flutter3.41 & dart3.11仿写抖音app
原创自研Flutter3.41+Dio+WindowManager打造桌面版AI问答系统
Flutter3.41实战AI:从零到一构建app版流式ai系统
Electron41 + Vite8打造流式输出客户端AI助手
Vite8.0+Vue3.5+Arco深度对接DeepSeek网页版AI智能助手
electron38-vite7-vue3os电脑端os管理系统
最新版electron38-vite7-admin电脑端中后台管理系统
Electron38+Vite7+Pinia3+ElementPlus客户端聊天程序
基于tauri2.8+vite7+vue3+element-plus仿QQ/微信聊天应用
tauri2.9-vite7-vue3admin客户端后台系统管理Exe模板
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。