refactor(hmr): simplify usage
This commit is contained in:
parent
19223f5462
commit
36d77f9a9e
@ -41,7 +41,13 @@ interface HMRRecord {
|
|||||||
const map: Map<string, HMRRecord> = new Map()
|
const map: Map<string, HMRRecord> = new Map()
|
||||||
|
|
||||||
export function registerHMR(instance: ComponentInternalInstance) {
|
export function registerHMR(instance: ComponentInternalInstance) {
|
||||||
map.get(instance.type.__hmrId!)!.instances.add(instance)
|
const id = instance.type.__hmrId!
|
||||||
|
let record = map.get(id)
|
||||||
|
if (!record) {
|
||||||
|
createRecord(id, instance.type as ComponentOptions)
|
||||||
|
record = map.get(id)!
|
||||||
|
}
|
||||||
|
record.instances.add(instance)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function unregisterHMR(instance: ComponentInternalInstance) {
|
export function unregisterHMR(instance: ComponentInternalInstance) {
|
||||||
@ -60,9 +66,11 @@ function createRecord(id: string, comp: ComponentOptions): boolean {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function rerender(id: string, newRender?: RenderFunction) {
|
function rerender(id: string, newRender?: RenderFunction) {
|
||||||
|
const record = map.get(id)
|
||||||
|
if (!record) return
|
||||||
// Array.from creates a snapshot which avoids the set being mutated during
|
// Array.from creates a snapshot which avoids the set being mutated during
|
||||||
// updates
|
// updates
|
||||||
Array.from(map.get(id)!.instances).forEach(instance => {
|
Array.from(record.instances).forEach(instance => {
|
||||||
if (newRender) {
|
if (newRender) {
|
||||||
instance.render = newRender
|
instance.render = newRender
|
||||||
}
|
}
|
||||||
@ -75,7 +83,8 @@ function rerender(id: string, newRender?: RenderFunction) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function reload(id: string, newComp: ComponentOptions) {
|
function reload(id: string, newComp: ComponentOptions) {
|
||||||
const record = map.get(id)!
|
const record = map.get(id)
|
||||||
|
if (!record) return
|
||||||
// 1. Update existing comp definition to match new one
|
// 1. Update existing comp definition to match new one
|
||||||
const comp = record.comp
|
const comp = record.comp
|
||||||
Object.assign(comp, newComp)
|
Object.assign(comp, newComp)
|
||||||
|
Loading…
Reference in New Issue
Block a user