Skip to content

useCached

类别
导出体积
199 B
上次更改
4 days ago

使用自定义比较器缓存一个 ref。

比较器签名为 (newSourceValue, cachedValue) => boolean。 当它返回 true 时,缓存保持不变。当它返回 false 时,缓存会更新为新的源值。

示例

Value: 42
Extra: 0
Cached Value: 42
Cached Extra: 0

使用

ts
import { 
useCached
} from '@vueuse/core'
import {
shallowRef
} from 'vue'
interface Data {
value
: number
extra
: number
} const
source
=
shallowRef
<Data>({
value
: 42,
extra
: 0 })
const
cached
=
useCached
(
source
, (
newSourceValue
,
cachedValue
) =>
newSourceValue
.
value
===
cachedValue
.
value
)
source
.
value
= {
value
: 42,
extra
: 1,
}
console
.
log
(
cached
.
value
) // { value: 42, extra: 0 }
source
.
value
= {
value
: 43,
extra
: 1,
}
console
.
log
(
cached
.
value
) // { value: 43, extra: 1 }
js
import { useCached } from '@vueuse/core'
import { shallowRef } from 'vue'
const source = shallowRef({ value: 42, extra: 0 })
const cached = useCached(
  source,
  (newSourceValue, cachedValue) => newSourceValue.value === cachedValue.value,
)
source.value = {
  value: 42,
  extra: 1,
}
console.log(cached.value) // { value: 42, extra: 0 }
source.value = {
  value: 43,
  extra: 1,
}
console.log(cached.value) // { value: 43, extra: 1 }

类型声明

ts
export interface 
UseCachedOptions
<
D
extends boolean = true>
extends ConfigurableDeepRefs<
D
>, WatchOptions {}
export declare function
useCached
<
T
,
D
extends boolean = true>(
refValue
:
Ref
<
T
>,
comparator
?: (
newSourceValue
:
T
,
cachedValue
:
T
) => boolean,
options
?:
UseCachedOptions
<
D
>,
):
UseCachedReturn
<
T
,
D
>
export type
UseCachedReturn
<
T
= any,
D
extends boolean = true,
> =
ShallowOrDeepRef
<
T
,
D
>

源码

源码演示文档

贡献者

一纸忘忧
Anthony Fu
Anthony Fu
一纸忘忧
IceMooncake
NoiseFan
IlyaL
Robin
IlyaL
sun0day
lvjiaxuan
Wenlu Wang

更新日志

Pending for release...
d886c - fix: update comparator type and improve documentation (#5376)
3f5da - fix(types): wrong import path
9afee - feat: add options.deepRefs (#4591)
0a9ed - feat!: drop Vue 2 support, optimize bundles and clean up (#4349)