vue3-core/packages/runtime-core/src/componentState.ts

31 lines
847 B
TypeScript
Raw Normal View History

2018-10-09 23:37:24 +08:00
import { ComponentInstance } from './component'
2018-09-19 23:35:38 +08:00
import { observable } from '@vue/observer'
2018-10-18 00:20:54 +08:00
import { isReservedKey } from '@vue/shared'
export function initializeState(
instance: ComponentInstance,
shouldExtractInitializers: boolean
) {
2018-10-17 07:10:08 +08:00
const { data } = instance.$options
const rawData = (instance._rawData = (data ? data.call(instance) : {}) as any)
if (shouldExtractInitializers) {
extractInitializers(instance, rawData)
}
2018-10-17 08:04:58 +08:00
instance.$data = observable(rawData || {})
}
// extract properties initialized in a component's constructor
export function extractInitializers(
instance: ComponentInstance,
data: any = {}
): any {
2018-10-17 07:10:08 +08:00
const keys = Object.keys(instance)
for (let i = 0; i < keys.length; i++) {
const key = keys[i]
2018-10-18 00:20:54 +08:00
if (!isReservedKey(key)) {
2018-10-17 08:04:58 +08:00
data[key] = (instance as any)[key]
}
2018-09-19 23:35:38 +08:00
}
2018-10-17 08:04:58 +08:00
return data
2018-09-19 23:35:38 +08:00
}