chore: consolidate new foundation and archive v1 (#1495)
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
---
|
||||
category: Component
|
||||
---
|
||||
|
||||
# computedInject
|
||||
|
||||
Combine computed and inject
|
||||
|
||||
## Usage
|
||||
|
||||
In Provider Component
|
||||
|
||||
```ts twoslash include main
|
||||
import type { InjectionKey, Ref } from 'vue';
|
||||
import { provide } from 'vue';
|
||||
|
||||
interface Item {
|
||||
key: number;
|
||||
value: string;
|
||||
}
|
||||
|
||||
export const ArrayKey: InjectionKey<Ref<Item[]>> = Symbol('symbol-key');
|
||||
|
||||
const array = ref([
|
||||
{ key: 1, value: '1' },
|
||||
{ key: 2, value: '2' },
|
||||
{ key: 3, value: '3' },
|
||||
]);
|
||||
|
||||
provide(ArrayKey, array);
|
||||
```
|
||||
|
||||
In Receiver Component
|
||||
|
||||
```ts
|
||||
// @filename: provider.ts
|
||||
// @include: main
|
||||
// ---cut---
|
||||
import { computedInject } from '@vueuse/core';
|
||||
|
||||
import { ArrayKey } from './provider';
|
||||
|
||||
const computedArray = computedInject(ArrayKey, (source) => {
|
||||
const arr = [...source.value];
|
||||
arr.unshift({ key: 0, value: 'all' });
|
||||
return arr;
|
||||
});
|
||||
```
|
||||
|
||||
## Type Declarations
|
||||
|
||||
```ts
|
||||
export type ComputedInjectGetter<T, K> = (source: T | undefined, oldValue?: K) => K;
|
||||
export type ComputedInjectGetterWithDefault<T, K> = (source: T, oldValue?: K) => K;
|
||||
export type ComputedInjectSetter<T> = (v: T) => void;
|
||||
export interface WritableComputedInjectOptions<T, K> {
|
||||
get: ComputedInjectGetter<T, K>;
|
||||
set: ComputedInjectSetter<K>;
|
||||
}
|
||||
export interface WritableComputedInjectOptionsWithDefault<T, K> {
|
||||
get: ComputedInjectGetterWithDefault<T, K>;
|
||||
set: ComputedInjectSetter<K>;
|
||||
}
|
||||
export declare function computedInject<T, K = any>(
|
||||
key: InjectionKey<T> | string,
|
||||
getter: ComputedInjectGetter<T, K>,
|
||||
): ComputedRef<K | undefined>;
|
||||
export declare function computedInject<T, K = any>(
|
||||
key: InjectionKey<T> | string,
|
||||
options: WritableComputedInjectOptions<T, K>,
|
||||
): ComputedRef<K | undefined>;
|
||||
export declare function computedInject<T, K = any>(
|
||||
key: InjectionKey<T> | string,
|
||||
getter: ComputedInjectGetterWithDefault<T, K>,
|
||||
defaultSource: T,
|
||||
treatDefaultAsFactory?: false,
|
||||
): ComputedRef<K>;
|
||||
export declare function computedInject<T, K = any>(
|
||||
key: InjectionKey<T> | string,
|
||||
options: WritableComputedInjectOptionsWithDefault<T, K>,
|
||||
defaultSource: T | (() => T),
|
||||
treatDefaultAsFactory: true,
|
||||
): ComputedRef<K>;
|
||||
```
|
||||
Reference in New Issue
Block a user