@lynx-js/react
@lynx-js/react 是适用于 Lynx 的 React。它保留了 React 17 的 API 界面,
重新导出标准的 Hook 和 API,并添加了双线程
模型所需的内容:主线程函数、页面从 native 接收到的数据,
以及一些编译期指令和宏。
备注
下面这些 React API 的行为与 React 官方参考文档 一致,除非页面另有说明。它们与 React 17 和 Preact 兼容。
React 从 React 18 开始进入“并发”时代。
以 useTransition、useDeferredValue 为代表的并发特性,对宿主如何调度任务有严格要求
——它们依赖浏览器的 Web API,或者依赖 React Native 的新架构。Lynx 有自己的架构演进方向,
因此 ReactLynx 选择以 React 17 为基础,同时保留 React 的编程模型。
React 19 和
React Compiler 中不依赖并发架构的部分,
我们仍会持续关注并尝试引入。
ReactLynx 的入门介绍参见 ReactLynx 指南。
接口
函数
Components
用于 Lynx 页面从 native 端接收的数据的 provider 和 consumer 组件,以及从 React 重新导出的组件。
- Component
- PureComponent
- Fragment
- GlobalPropsConsumer
- GlobalPropsProvider
- InitDataConsumer
- InitDataProvider
- Suspense
Documents
Functions
用于跨越线程边界、在 JSX 之外创建元素,以及挂载 root 的函数。
- Children
- root
- cloneElement
- createContext
- createElement
- createPortal
- createRef
- forwardRef
- isValidElement
- lazy
- markFirstScreenSyncReady
- memo
- runOnBackground
- runOnMainThread
- withInitDataInState
Hooks
ReactLynx 在 React 之上新增的 Hook,以及它针对双线程模型 重新导出或重新实现的 React Hook。
- useCallback
- useContext
- useDebugValue
- useEffect
- useErrorBoundary
- useGlobalProps
- useGlobalPropsChanged
- useImperativeHandle
- useInitData
- useInitDataChanged
useLayoutEffect- useLynxGlobalEventListener
- useMainThreadRef
- useMemo
- useReducer
- useRef
- useState
- useSyncExternalStore
Types
@lynx-js/react 导出的类型和类。请在项目中扩展 InitData 和
GlobalProps,为页面接收到的数据添加类型。