在日常开发中,现代前端框架已经帮我们处理了大部分元件树和节点属性的更新。不过有时你还是需要直接操作节点,比如控制媒体播放器、操作视图行为、获取节点信息或直接修改样式。
这些功能通常由元件在客户端实现,你需要通过节点引用来访问它们。
让我们尝试一个简单的需求 - 自动滚动页面。我们需要调用 <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()
来提交操作,这样才会真正执行: