rn入口文件setup.js解读

一:DEV 是 React Native 自带的全局常量

DEV 的作用:它是一个全局布尔值,在开发模式下为 true,在生产模式下为 false

二:标签解释
html 复制代码
 <QueryClientProvider client={queryClient}>
          <Provider store={store}>
            <AntProvider
              theme={{
                brand_primary: colors.brand_primary,
                toast_fill: 'rgba(30,35,41,0.7)',
              }}>
              <App />
            </AntProvider>
          </Provider>
</QueryClientProvider>
  • 最外层 QueryClientProvider:为整棵 React 子树提供 react-query 的查询上下文(缓存、请求、失效管理等),使得任意子组件都可用 useQuery/useMutation。
  • 中间 Provider(redux):为全局状态管理提供 store,使子组件可以 connect 或 useSelector/useDispatch。
  • 最内层 AntProvider(Ant Design RN):提供 UI 主题(如 brand_primary、toast_fill),它只需要包裹需要主题的 UI 组件即可。

额外知识点:

1,如何判断是否可迭代对象

const isIterable = (obj) => obj != null && typeof obj[Symbol.iterator] === 'function';

三:render 的渲染时机和次数
  • 不是轮询。React 会在状态或属性变化、或外部调度时触发渲染(协调阶段),然后决定是否提交真实 UI 更新(提交阶段)。
四:AppState(React Native API)

作用:监听应用前后台状态切换(active、background、inactive)。常用于:进入前台时刷新数据、进入后台时暂停任务、保存状态等。

  • 可以用定时器控制"何时改变 state",进而控制"何时渲染"。例如在 componentDidMount 里 setTimeout 后 setState,就会在超时后触发一次新的渲染。
  • render 执行次数不固定:初次挂载 1 次;每次 setState/props 变化都会再次执行;开发环境下可能因 StrictMode 触发额外的检查调用。应当把 render 视为"可多次执行的纯函数"。
javascript 复制代码
      import { AppState } from 'react-native';
      const sub = AppState.addEventListener('change', (state) => {
        if (state === 'active') { /* 进入前台 */ }
      });
      // 组件卸载时 sub.remove()
五:QueryClient和QueryClientProvider(@tanstack/react-query 核心对象)

1,QueryClient是 React Query 的客户端实例,负责:

2,QueryClientProvider

  • 管理查询缓存(Query Cache)与变更缓存(Mutation Cache)
  • 设置默认选项(如 staleTime、retry 等)
  • 提供全局方法:invalidateQueries、refetchQueries、setQueryData、getQueryData、cancelQueries、clear 等
  • React 上下文提供者,把 QueryClient 放进 Context,供整棵子树使用 useQuery、useMutation 等钩子。
  • 放在最外层是为了让所有页面/组件都能访问到同一个缓存与配置,实现数据请求/缓存/失效策略的一致性。
相关推荐
Goway_Hui3 天前
【ReactNative鸿蒙化-三方库使用与C-API集成】
c语言·react native·harmonyos
zh_xuan6 天前
启动RN服务端口被占用
android·react native
墨狂之逸才7 天前
在 React Native 中集成 MinIO 对象存储(图片/文件上传服务)
react native
chenbin___7 天前
鸿蒙RN position: ‘absolute‘ 和 zIndex 的兼容性问题(转自千问)
前端·javascript·react native·harmonyos
未名编程7 天前
React Native WebView 加载远程页面显示错误内容的深层原因及解决方案
javascript·react native·react.js
chenbin___8 天前
检查hooks依赖的工具(转自千问)
开发语言·前端·javascript·react native·react.js
chenbin___8 天前
鸿蒙(HarmonyOS)支持 useNativeDriver的详细说明(转自千问)
前端·javascript·react native·react.js·harmonyos
黑臂麒麟8 天前
React Hooks 闭包陷阱:状态“丢失“的经典坑
javascript·react native·react.js·ecmascript
fix一个write十个9 天前
NativeWind v4 与 React Native UI Kit或三方库样式隔离指南
前端·react native
2601_949593659 天前
小白入门ReactNative for OpenHarmony项目鸿蒙化三方库:react-native-fast-image
react native·react.js·harmonyos