直接操作节点
在日常开发中,现代前端框架已经帮我们处理了大部分元件树和节点属性的更新。不过有时你还是需要直接操作节点,比如控制媒体播放器、操作视图行为、获取节点信息或直接修改样式。
这些功能通常由元件在客户端实现,你需要通过节点引用来访问它们。
在后台线程操作节点
示例:自动滚动
让我们尝试一个简单的需求 - 自动滚动页面。我们需要调用 <scroll-view /> 节点的 autoScroll 方法:
这个示例展示了操作节点的两个步骤:使用 useRef 创建引用并通过 ref={scrollRef} 绑定到目标节点,然后在事件处理函数中通过 invoke() 调用节点方法。
通过 ref 获取节点引用
如果你熟悉 React,你会发现 ref 的使用方式很相似:
不过要注意,在 Lynx 中节点引用的类型是 NodesRef,这一点和 React 有所不同。如果你想了解更多关于引用的使用技巧,可以参考 Manipulating the Element with Refs。
通过节点引用操作节点
获取到节点引用后,让我们来看看如何使用它。NodesRef 为你提供了一系列有用的 API。
比如,你可以使用 NodesRef.invoke() 来调用节点的方法。每个元件都会提供一些特定的方法,这些方法在客户端实现并暴露给前端使用。
调用方法时,你可以通过 params 传入方法所 需的参数,使用 success 回调处理成功的结果,并用 fail 回调来处理可能的错误。记得在最后调用 exec() 来提交操作,这样才会真正执行:
在主线程操作节点
如果你想要更好的性能和更直观的代码,可以考虑在主线程操作节点。它的优点是操作延迟更低,UI 响应更快,且 API 调用方式更自然。
