使用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)
我发现我可以通过在有问题的虚拟节点上注册一个钩子来解决此问题,这是虚拟域AFAICT的一些文献记载的功能。钩子在渲染后立即被真正的DOM节点调用。
虚拟DOM是非常具体的钩子,他们需要使用对象hook
和unhook
他们的原型(不能直接性)功能。
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(),
})
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句