当前位置: 首页 > wzjs >正文

自己做网站怎么做游戏推广员怎么做

自己做网站怎么做,游戏推广员怎么做,2021半夜好用的网站,自己做网站的流程React 在处理流式数据和非流式数据时,可以借助其组件模型、状态管理以及 React 18 引入的并发特性来实现高效的数据处理与渲染优化。 文章目录一、流式数据(Streaming Data)1. 定义2. 常见来源3. 处理方式使用 useState / useReducer 管理状态…

React 在处理流式数据非流式数据时,可以借助其组件模型、状态管理以及 React 18 引入的并发特性来实现高效的数据处理与渲染优化。

文章目录

    • 一、流式数据(Streaming Data)
      • 1. 定义
      • 2. 常见来源
      • 3. 处理方式
        • 使用 `useState` / `useReducer` 管理状态
        • 使用 `useRef` 存储引用(避免重复渲染)
        • 自定义 Hook 封装逻辑
        • 使用 Web Worker 处理复杂计算
        • 渲染优化建议
    • 二、非流式数据(Non-streaming Data)
      • 1. 定义
      • 2. 常见来源
      • 3. 处理方式
        • 使用 `useEffect` 触发一次性请求
        • 使用 SWR / React Query 进行数据缓存与异步管理
          • SWR 示例:
          • React Query 示例:
        • Suspense + Promise 支持异步依赖
        • 预加载 & 缓存策略
    • 三、通用优化策略
    • 总结对比


一、流式数据(Streaming Data)

1. 定义

流式数据是指持续不断产生并实时传输的数据,例如通过 WebSocket、Server-Sent Events (SSE) 等方式获取的数据。

2. 常见来源

  • WebSocket 实时通信
  • Server-Sent Events (SSE)
  • MQTT(物联网)
  • 长轮询(Long Polling)

3. 处理方式

使用 useState / useReducer 管理状态
const [messages, setMessages] = useState<string[]>([]);useEffect(() => {const ws = new WebSocket('wss://example.com/socket');ws.onmessage = (event) => {setMessages(prev => [...prev, event.data]);};return () => ws.close();
}, []);
使用 useRef 存储引用(避免重复渲染)

适用于保存连接对象或缓存数据:

const socketRef = useRef<WebSocket | null>(null);
自定义 Hook 封装逻辑
function useWebSocket(url: string) {const [messages, setMessages] = useState<string[]>([]);useEffect(() => {const ws = new WebSocket(url);ws.onmessage = (event) => setMessages(prev => [...prev, event.data]);return () => ws.close();}, [url]);return messages;
}
使用 Web Worker 处理复杂计算

避免主线程阻塞,适合在后台处理大量流式数据。

渲染优化建议
  • 虚拟滚动(Virtual Scrolling):使用 react-windowreact-virtualized 只渲染可视区域内容。
  • 节流/防抖(Throttle/Debounce):控制高频更新频率。
  • React.memo / useMemo / useCallback:减少不必要的子组件重新渲染。

二、非流式数据(Non-streaming Data)

1. 定义

非流式数据是一次性加载完成的数据,通常来自 HTTP 请求、本地存储等,有明确的开始和结束。

2. 常见来源

  • RESTful API
  • GraphQL 查询
  • localStorage / IndexedDB
  • 表单提交、静态资源加载

3. 处理方式

使用 useEffect 触发一次性请求
const [data, setData] = useState(null);useEffect(() => {fetch('/api/data').then(res => res.json()).then(setData);
}, []);
使用 SWR / React Query 进行数据缓存与异步管理

推荐使用第三方库进行更高级的数据管理:

SWR 示例:
import useSWR from 'swr';const fetcher = (url: string) => fetch(url).then(res => res.json());function MyComponent() {const { data, error } = useSWR('/api/data', fetcher);if (error) return <div>Failed to load</div>;if (!data) return <div>Loading...</div>;return <div>{JSON.stringify(data)}</div>;
}
React Query 示例:
import { useQuery } from 'react-query';function useGetData() {return useQuery(['data'], () =>fetch('/api/data').then(res => res.json()));
}
Suspense + Promise 支持异步依赖

React 18 支持使用 Suspense 来包裹异步加载组件:

const AsyncDataComponent = React.lazy(() => import('./DataComponent'));function App() {return (<React.Suspense fallback="Loading..."><AsyncDataComponent /></React.Suspense>);
}
预加载 & 缓存策略
  • 使用 <link rel="prefetch"> 提前加载资源。
  • 利用 Service Worker 或 LocalStorage 缓存接口响应。

三、通用优化策略

优化点描述
React.memo避免子组件不必要重渲染
useMemo缓存计算结果,避免重复执行
useCallback缓存函数引用,防止子组件频繁更新
代码分割使用 React.lazySuspense 按需加载组件
服务端渲染(SSR)提升首屏性能,适用于非流式数据
骨架屏 / 占位符提升用户体验,避免白屏

总结对比

类型数据特点获取方式处理方式优化重点
流式数据实时、连续、无边界WebSocket、SSE持续监听、逐步更新防止频繁渲染、内存泄漏
非流式数据静态、一次性、有界HTTP、LocalStorage一次性加载、缓存加载速度、缓存策略
http://www.dtcms.com/wzjs/405831.html

相关文章:

  • 简历模板电子版免费seo视频教程汇总
  • 做网站的服务器要什么格式西安核心关键词排名
  • 想要给网站投稿如何做云搜索网页版入口
  • dw简单的网页制作aso优化的主要内容
  • bbs网站模板下载微信营销平台有哪些
  • 网站原创文章在哪里找广州信息流推广公司排名
  • 泊头网站建设今日头条最新消息
  • 上海做建材上什么网站好推广软件排行榜前十名
  • 做网站网页维护手机App开发怎么引流到微信呢
  • 外贸网站建设及优化ppt模块网络广告文案案例
  • 网站开发四点注意事项seo综合查询国产
  • 需要找做网站的互联网广告营销方案
  • 网站托管是什么意思营销型网站建设费用
  • 做外贸是不是要有网站灵感关键词生成器
  • 嘉定网站建设哪家好软文代写接单平台
  • 哪个网站做阿里首页模板廊坊百度提升优化
  • 建设网站需要花多少钱网站开发教程
  • 盐城做网站哪家最好如何让网站快速收录
  • 国外购物平台排行榜前十名广州seo推广
  • 优化网站作用口碑营销的案例有哪些
  • 公司网站后台怎么上传视频西安搜建站科技网站
  • 怎么在虚拟空间做两个网站淘宝关键词搜索
  • 重钢建设公司官方网站大数据营销软件
  • 网站建设ppt课件广州seo外包
  • 一个专门做字画的网站中国营销网官网
  • 网站建设公司主营业务建站推广网站
  • 唐山网站建设制作b站好看的纪录片免费
  • 网站语言有几种找客户资源的软件
  • 0基础如何做网站最新热搜新闻事件
  • 代理网游要多少钱广东seo推广方案