12345678910111213141516171819202122232425262728293031323334 |
- /* @flow */
- import { warn } from 'core/util/debug'
- import { handleError } from 'core/util/error'
- import { RECYCLE_LIST_MARKER } from 'weex/util/index'
- import { createComponentInstanceForVnode } from 'core/vdom/create-component'
- import { resolveVirtualComponent } from './virtual-component'
- export function isRecyclableComponent (vnode: VNodeWithData): boolean {
- return vnode.data.attrs
- ? (RECYCLE_LIST_MARKER in vnode.data.attrs)
- : false
- }
- export function renderRecyclableComponentTemplate (vnode: MountedComponentVNode): VNode {
- // $flow-disable-line
- delete vnode.data.attrs[RECYCLE_LIST_MARKER]
- resolveVirtualComponent(vnode)
- const vm = createComponentInstanceForVnode(vnode)
- const render = (vm.$options: any)['@render']
- if (render) {
- try {
- return render.call(vm)
- } catch (err) {
- handleError(err, vm, `@render`)
- }
- } else {
- warn(
- `@render function not defined on component used in <recycle-list>. ` +
- `Make sure to declare \`recyclable="true"\` on the component's template.`,
- vm
- )
- }
- }
|