WeakMap在Vue组件里怎么用才不会内存泄漏?
我在Vue组件里想用WeakMap缓存一些DOM节点的元数据,但不确定会不会导致内存泄漏。试了下发现组件卸载后WeakMap里的引用好像还在?
这是我的写法:
<template>
<div ref="container"></div>
</template>
<script>
export default {
mounted() {
const meta = new WeakMap();
meta.set(this.$refs.container, { id: 'panel-1', visible: true });
// 存到组件实例上方便后续访问
this._metaCache = meta;
},
beforeUnmount() {
// 这里需要手动清理吗?
}
}
</script>
WeakMap不是自动清理的吗?为什么我担心卸载后还占着内存?
如果还是担心,可以这样写确保清除:
但实际没必要,就这样。