ReactLynx 遵循 React 的编程模型,但通过利用 Lynx 提供的双线程运行时,结合自身的编程范式(或规则)来实现更好的性能和用户体验。
当组件 <HelloComponent /> 被渲染时,你可能会在控制台看到 "Hello" 被打印两次。
这是因为它的代码会在两个线程上运行:主线程和后台线程,它们都是 Lynx 双线程运行时的一部分。
然而,并非所有代码都能在两个线程上运行。
考虑以下向 GlobalEventEmitter 添加监听器的示例:
当组件 <EventListenerComponent /> 被渲染时,你会看到 "not a function" 的错误。这是因为 lynx 在两个线程渲染了这个组件,但实际上 lynx.getJSModule('GlobalEventEmitter') 不能在主线程执行。
这仍然与 Lynx 的双线程运行时架构有关,<EventListenerComponent /> 的代码会在两个线程上执行:
对于后台线程:
lynx.getJSModule 函数是 Lynx GlobalEventEmitter API 的一部分。因此,在这里执行 lynx.getJSModule('GlobalEventEmitter') 不会有问题。
对于主线程:
相反,getJSModule 函数在主线程上并不存在。因此,当这段代码在主线程上执行时,lynx.getJSModule 会被判定为 undefined,导致 "not a function" 错误。