All files / src/instance computed.ts

86.36% Statements 19/22
76.66% Branches 23/30
100% Functions 3/3
86.36% Lines 19/22

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32  1x 1x   1x 1x 1x 1x 1x   46x 26x 26x 32x 32x 32x     32x 32x 32x         32x 10x          
import shallowEqual from 'shallowequal'
import { isDev } from '../util/env'
import { warn } from '../util/warn'
 
export function initComputed (vm, forceUpdate: boolean = false) {
  if (vm._isMounted || forceUpdate) {
    const computed = vm.$options.computed || {}
    Object.keys(computed).forEach(key => {
      const userDef = computed[key]
      const getter = typeof userDef === 'function' ? userDef : userDef.get
      if (isDev && !getter) {
        warn(
          `Getter is missing for computed property "${key}".`,
          vm
        )
      }I
      if (getter) {
        const value = getter.call(vm, vm)
        if (Evm.$options.props && key in vm.$options.props) {
          if (isDev) {
            warnI(`The computed property "${key}" is already defined as a prop.`, vm)
          }
        } else if (!shallowEqual(vm._renderProxy.data[key], value)) {
          vm._renderProxy.setData({
            [key]: value,
          })
        }
      }
    })
  }
}