javascript - virtual-dom - 如何获取真实的 DOM 元素以便与 spin.js 集成?

标签 javascript html dom spin.js virtual-dom

使用 virtual-dom 时库,我怎样才能获得与虚拟 DOM 元素相对应的真实 DOM 元素?用例是我需要通过 spin.js 操作 DOM图书馆。

相应地,在 React 中你可以调用 React.findDOMNode为了获取要传递给 spin.js 的元素。

示例代码:

let el = h('#spinner')
# TODO: Pass real DOM element, not virtual, but how?
new Spinner().spin(el)

最佳答案

我发现我可以通过在有问题的虚拟节点上注册一个钩子(Hook)来解决这个问题,这是 virtual-dom 的一个小记录功能。 AFAICT。一旦渲染后,就会使用真实的 DOM 节点调用该钩子(Hook)。

virtual-dom 对于它的钩子(Hook)非常具体,它们需要是在其原型(prototype)上具有 hookunhook 函数的对象(不能是直接属性)。

let h = require('mercury').h

// Hook to get hold of real DOM node
let Hook = () => {}
Hook.prototype.hook = (node) => {
  // Do what thou wilst with the node here
}
Hook.prototype.unhook = () => {}

// Mercury component
let Component = () => {
}

Component.render = (state) => {
  // Create virtual node with hook
  return h('div', {
    hook: new Hook(),
  })
}

关于javascript - virtual-dom - 如何获取真实的 DOM 元素以便与 spin.js 集成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30667351/

相关文章:

javascript - 在此浏览器对象层次结构中继承的角色和职责

html - 如何对齐表格中的垂直文本?

javascript - 获取一些父元素 ID 以发送给 JavaScript 函数

javascript - 页面底部的图像不应被内容覆盖

javascript - ckeditor 未在弹出对话框中加载通过 ajax 生成的元素?

javascript - 在 JavaScript 中创建动态表

javascript - 从jquery添加的html控件触发asp.net事件

javascript - nodejs导入需要转换

javascript - 将json结构转换为jquery angularjs中的嵌套json结构

html - 防止 float div包裹错误