Refs.js 759 B

12345678910111213141516
  1. import { lifeCycleQueue } from './may-dom/scheduler';
  2. export var Refs = {
  3. //当子component含有ref的时候,需要把对应的instance或dom添加到 父component的refs属性中
  4. //如果在mountComponent中做这样的操作需要每一层都要添加owner 放在外面更好些;
  5. currentOwner: null,
  6. //开始render时isRoot为true,方便ref定位最顶端节点
  7. isRoot: false,
  8. attachRef: function (vnode, hostNode) {
  9. if (vnode.refType === 1) { //func
  10. hostNode.mayInst && hostNode.mayInst.stateless && (hostNode = null);
  11. lifeCycleQueue.push(vnode.ref.bind(vnode, hostNode));
  12. } else if (vnode.refType === 2) { //string
  13. this.currentOwner.refs[vnode.ref] = hostNode;
  14. }
  15. }
  16. }