ensure that `this.vnode` is always set