Reactivity API: યુટિલિટીઝ (Utilities)
isRef()
ચકાસે છે કે value ref object છે કે નહીં.
ટાઇપ (Type)
tsfunction isRef<T>(r: Ref<T> | unknown): r is Ref<T>નોંધ કરો કે return type type predicate છે, જેનો અર્થ
isRefને type guard તરીકે ઉપયોગ કરી શકાય:tslet foo: unknown if (isRef(foo)) { // foo નો type Ref<unknown> સુધી narrowed છે foo.value }
unref()
જો argument ref હોય તો inner value return કરે છે, નહીંતર argument પોતે return કરે. val = isRef(val) ? val.value : val માટે sugar function.
ટાઇપ (Type)
tsfunction unref<T>(ref: T | Ref<T>): Tઉદાહરણ (Example)
tsfunction useFoo(x: number | Ref<number>) { const unwrapped = unref(x) // unwrapped હવે ચોક્કસપણે number છે }
toRef()
Values / refs / getters ને refs માં normalize કરવા ઉપયોગ કરી શકાય (3.3+).
Source reactive object ની property માટે ref બનાવવા માટે પણ ઉપયોગ કરી શકાય. Created ref તેની source property સાથે synced છે: source property ને mutate કરવાથી ref update થશે, અને ઊલટું.
ટાઇપ (Type)
ts// normalization signature (3.3+) function toRef<T>( value: T ): T extends () => infer R ? Readonly<Ref<R>> : T extends Ref ? T : Ref<UnwrapRef<T>> // object property signature function toRef<T extends object, K extends keyof T>( object: T, key: K, defaultValue?: T[K] ): ToRef<T[K]> type ToRef<T> = T extends Ref ? T : Ref<T>ઉદાહરણ (Example)
Normalization signature (3.3+):
js// existed refs ને as-is return કરે toRef(existingRef) // readonly ref બનાવે જે .value access પર getter call કરે toRef(() => props.foo) // non-function values માંથી normal refs બનાવે // ref(1) ના સમકક્ષ toRef(1)Object property signature:
jsconst state = reactive({ foo: 1, bar: 2 }) // two-way ref જે original property સાથે sync થાય const fooRef = toRef(state, 'foo') // ref ને mutate કરવાથી original update થાય fooRef.value++ console.log(state.foo) // 2 // original ને mutate કરવાથી ref પણ update થાય state.foo++ console.log(fooRef.value) // 3નોંધ કરો કે આ નીચેનાથી અલગ છે:
jsconst fooRef = ref(state.foo)ઉપરોક્ત ref
state.fooસાથે sync નથી, કારણ કેref()plain number value receive કરે છે.toRef()ઉપયોગી છે જ્યારે તમે prop નો ref composable function ને pass કરવા માંગો:vue<script setup> import { toRef } from 'vue' const props = defineProps(/* ... */) // `props.foo` ને ref માં convert કરો, પછી // composable ને pass કરો useSomeFeature(toRef(props, 'foo')) // getter syntax - 3.3+ માં ભલામણ useSomeFeature(toRef(() => props.foo)) </script>જ્યારે
toRefcomponent props સાથે ઉપયોગ થાય, ત્યારે props ને mutate કરવા આસપાસના સામાન્ય restrictions હજુ apply થાય. Ref ને નવી value assign કરવાનો પ્રયાસ prop ને directly modify કરવાના સમકક્ષ છે અને allowed નથી. તે scenario માંgetઅનેsetસાથેcomputedઉપયોગ કરવાનું વિચારો. વધુ માહિતી માટે components સાથેv-modelઉપયોગ કરવા ગાઇડ જુઓ.Object property signature ઉપયોગ કરતી વખતે,
toRef()ઉપયોગી ref return કરશે ભલે source property હાલમાં exist ન કરતી હોય. આ optional properties સાથે કામ કરવાનું શક્ય બનાવે છે, જેtoRefsદ્વારા pick up ન થાય.
toValue()
- માત્ર 3.3+ માં સપોર્ટેડ
Values / refs / getters ને values માં normalize કરે છે. unref() જેવું જ છે, સિવાય કે તે getters ને પણ normalize કરે. જો argument getter હોય, તો તેને invoke કરવામાં આવશે અને તેની return value return થશે.
Composables માં argument ને normalize કરવા ઉપયોગ કરી શકાય જે value, ref, અથવા getter હોઈ શકે.
ટાઇપ (Type)
tsfunction toValue<T>(source: T | Ref<T> | (() => T)): Tઉદાહરણ (Example)
jstoValue(1) // --> 1 toValue(ref(1)) // --> 1 toValue(() => 1) // --> 1Composables માં arguments normalize કરવા:
tsimport type { MaybeRefOrGetter } from 'vue' function useFeature(id: MaybeRefOrGetter<number>) { watch(() => toValue(id), id => { // id changes ને react કરો }) } // આ composable નીચેનામાંથી કોઈપણ support કરે: useFeature(1) useFeature(ref(1)) useFeature(() => 1)
toRefs()
Reactive object ને plain object માં convert કરે છે જ્યાં resulting object ની દરેક property original object ની corresponding property ને point કરતું ref છે. દરેક individual ref toRef() ઉપયોગ કરીને created છે.
ટાઇપ (Type)
tsfunction toRefs<T extends object>( object: T ): { [K in keyof T]: ToRef<T[K]> } type ToRef = T extends Ref ? T : Ref<T>ઉદાહરણ (Example)
jsconst state = reactive({ foo: 1, bar: 2 }) const stateAsRefs = toRefs(state) /* stateAsRefs નો Type: { foo: Ref<number>, bar: Ref<number> } */ // ref અને original property "linked" છે state.foo++ console.log(stateAsRefs.foo.value) // 2 stateAsRefs.foo.value++ console.log(state.foo) // 3toRefscomposable function માંથી reactive object return કરતી વખતે ઉપયોગી છે જેથી consuming ઘટક reactivity ગુમાવ્યા વિના returned object ને destructure/spread કરી શકે:jsfunction useFeatureX() { const state = reactive({ foo: 1, bar: 2 }) // ...state પર operate કરતું logic // return કરતી વખતે refs માં convert કરો return toRefs(state) } // reactivity ગુમાવ્યા વિના destructure કરી શકાય const { foo, bar } = useFeatureX()toRefsફક્ત source object પર call time માં enumerable હોય તેવી properties માટે refs generate કરશે. હજુ exist ન કરતી property માટે ref બનાવવા,toRefઉપયોગ કરો.
isProxy()
ચકાસે છે કે object reactive(), readonly(), shallowReactive() અથવા shallowReadonly() દ્વારા created proxy છે કે નહીં.
ટાઇપ (Type)
tsfunction isProxy(value: any): boolean
isReactive()
ચકાસે છે કે object reactive() અથવા shallowReactive() દ્વારા created proxy છે કે નહીં.
ટાઇપ (Type)
tsfunction isReactive(value: unknown): boolean
isReadonly()
ચકાસે છે કે passed value readonly object છે કે નહીં. Readonly object ની properties બદલી શકાય, પરંતુ passed object દ્વારા directly assign ન કરી શકાય.
readonly() અને shallowReadonly() દ્વારા created proxies બંને readonly માનવામાં આવે, તેમ જ set function વિનાનો computed() ref.
ટાઇપ (Type)
tsfunction isReadonly(value: unknown): boolean