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 等钩子。
  • 放在最外层是为了让所有页面/组件都能访问到同一个缓存与配置,实现数据请求/缓存/失效策略的一致性。
相关推荐
墨狂之逸才20 小时前
React Native 状态管理大比拼:Event Bus 还是 Context?小白一看就懂!
react native
爱滑雪的码农20 小时前
React Native 完整开发全流程(从零到上线)
javascript·react native·react.js
沐言人生20 小时前
ReactNative 源码分析12——Native View创建流程onBatchComplete
android·react native
沐言人生3 天前
ReactNative 源码分析11——Native View创建流程setChildren和manageChildren
android·react native
沐言人生4 天前
ReactNative 源码分析10——Native View创建流程createView
android·react native
坏小虎4 天前
【聊天列表组件选型建议】FlashList、FlatList、LegendList三种列表组件
javascript·react native·react.js
sealaugh325 天前
react native(学习笔记第五课) 英语打卡微应用(4)- frontend的列表展示
笔记·学习·react native
沐言人生6 天前
ReactNative 源码分析9——Native View初始化
android·react native
接着奏乐接着舞6 天前
react native expo打包
javascript·react native·react.js
jxm_csdn7 天前
Expo Go 本地命令行编译 apk(Ubutnu22.04)
react native