Composition API:
ડિપેન્ડન્સી ઇન્જેક્શન (Dependency Injection)
provide()
એક વેલ્યુ પ્રદાન કરે છે જે વંશજ (descendant) ઘટકો દ્વારા inject કરી શકાય.
ટાઇપ (Type)
tsfunction provide<T>(key: InjectionKey<T> | string, value: T): voidવિગત (Details)
provide()બે આર્ગ્યુમેન્ટ્સ લે છે: key, જે string અથવા symbol હોઈ શકે, અને inject કરવાની વેલ્યુ.TypeScript ઉપયોગ કરતી વખતે, key
InjectionKeyતરીકે cast થયેલું symbol હોઈ શકે - Vue દ્વારા પ્રદાન કરાયેલ utility type જેSymbolને extend કરે છે, જેનો ઉપયોગprovide()અનેinject()વચ્ચે value type sync કરવા માટે થઈ શકે.lifecycle hook registration APIs ની જેમ,
provide()ને ઘટકનાsetup()phase દરમિયાન synchronously બોલાવવું આવશ્યક છે.ઉદાહરણ (Example)
vue<script setup> import { ref, provide } from 'vue' import { countSymbol } from './injectionSymbols' // static value provide કરો provide('path', '/project/') // reactive value provide કરો const count = ref(0) provide('count', count) // Symbol keys સાથે provide કરો provide(countSymbol, count) </script>આ પણ જુઓ
inject()
પૂર્વજ (ancestor) ઘટક અથવા એપ્લિકેશન (app.provide() દ્વારા) દ્વારા provide કરેલી વેલ્યુ inject કરે છે.
ટાઇપ (Type)
ts// default value વિના function inject<T>(key: InjectionKey<T> | string): T | undefined // default value સાથે function inject<T>(key: InjectionKey<T> | string, defaultValue: T): T // factory સાથે function inject<T>( key: InjectionKey<T> | string, defaultValue: () => T, treatDefaultAsFactory: true ): Tવિગત (Details)
પ્રથમ આર્ગ્યુમેન્ટ injection key છે. Vue parent chain ઉપર ચાલશે અને matching key સાથે provide કરેલી value શોધશે. જો parent chain માં બહુવિધ ઘટકો સમાન key provide કરે, તો injecting ઘટકની સૌથી નજીકનો "shadow" (છાયો) ઊંચે ચેઇનમાં રહેલાઓને કરશે અને તેની value ઉપયોગ થશે. જો matching key સાથે કોઈ value ન મળે, તો
inject()undefinedરિટર્ન કરે છે સિવાય કે default value provide કરવામાં આવી હોય.બીજો આર્ગ્યુમેન્ટ વૈકલ્પિક છે અને default value છે જે matching value ન મળે ત્યારે ઉપયોગ થશે.
બીજો આર્ગ્યુમેન્ટ factory function પણ હોઈ શકે જે બનાવવામાં ખર્ચાળ values રિટર્ન કરે. આ કિસ્સામાં, ત્રીજા આર્ગ્યુમેન્ટ તરીકે
trueપાસ કરવું આવશ્યક છે જે દર્શાવે કે function ને value ના બદલે factory તરીકે ઉપયોગ કરવો.lifecycle hook registration APIs ની જેમ,
inject()ને ઘટકનાsetup()phase દરમિયાન synchronously બોલાવવું આવશ્યક છે.TypeScript ઉપયોગ કરતી વખતે, key
InjectionKeytype ની હોઈ શકે - Vue દ્વારા provide કરાયેલ utility type જેSymbolને extend કરે છે, જેનો ઉપયોગprovide()અનેinject()વચ્ચે value type sync કરવા માટે થઈ શકે.ઉદાહરણ (Example)
ધારો કે parent ઘટકે અગાઉના
provide()ઉદાહરણમાં બતાવ્યા મુજબ values provide કરી છે:vue<script setup> import { inject } from 'vue' import { countSymbol } from './injectionSymbols' // default વિના static value inject કરો const path = inject('path') // reactive value inject કરો const count = inject('count') // Symbol keys સાથે inject કરો const count2 = inject(countSymbol) // default value સાથે inject કરો const bar = inject('path', '/default-path') // function default value સાથે inject કરો const fn = inject('function', () => {}) // default value factory સાથે inject કરો const baz = inject('factory', () => new ExpensiveObject(), true) </script>આ પણ જુઓ
hasInjectionContext()
- માત્ર 3.3+ માં સપોર્ટેડ
જો inject() ને ખોટી જગ્યાએ (દા.ત. setup() ની બહાર) બોલાવવા વિશે warning વિના ઉપયોગ કરી શકાય તો true રિટર્ન કરે છે. આ method એવી libraries માટે ડિઝાઇન કરવામાં આવી છે જે end user ને warning ટ્રિગર કર્યા વિના આંતરિક રીતે inject() ઉપયોગ કરવા માંગે.
ટાઇપ (Type)
tsfunction hasInjectionContext(): boolean