z-util-page
Version:
146 lines (145 loc) • 3.38 kB
TypeScript
/**
* @category 响应式数据API
* @module Reactive
*/
export type ReactiveOptions = {
value: any;
isShadow: boolean;
isReadonly: boolean;
};
/**
* 代理对象值,返回响应式数据
* @example
* ```ts
* const obj = reactive({name:'张三'});
* obj.name = '李四';
* console.log(obj.name); //李四
* ```
* @param value 对象值
* @param isShadow true为浅代理,false为深代理
* @param isReadonly 是否只读
* @returns { Proxy<T> }
*/
export declare function reactive<T extends object>(value: T, isShadow?: boolean, isReadonly?: boolean): T;
export interface Ref<T> {
value: T;
}
/**
* 代理基本类型值,返回响应式数据
* ```ts
* const obj = ref(3);
* obj.value = 4;
* console.log(obj.value); //4
* ```
* @param value 基本类型值
* @param isReadonly 是否只读
* @returns { value: T }
*/
export declare function ref<T>(value: T, isReadonly?: boolean): Ref<T>;
/**
* 将响应式对象的某键值转为ref
* @example
* ```ts
* const obj = reactive({ a: 1 });
* const a = toRef(obj, 'a');
* a.value = 2;
* console.log(obj.a); //2
* ```
* @param val 响应式对象
* @param key 键值
* @returns Ref
*/
export declare function toRef(val: any, key: string | symbol): {
value: any;
};
/**
* 将响应式对象的键值全部转换为Ref, 可解构使用
* @example
* ```ts
* const obj = reactive({ a: 1, b: 2 });
* const { a, b } = toRefs(obj);
* a.value = 2;
* console.log(obj.a); //2
* ```
* @param obj 响应式对象
* @returns Refs
*/
export declare function toRefs(obj: any): {};
export type EffectOptions = {
schedule?: Function;
lazy?: boolean;
immediate?: boolean;
flush?: 'post' | '';
};
export type DepsMap = Map<string | symbol, Set<Effect>>;
export interface Effect {
(): any;
deps: Array<Set<Effect>>;
childs: Array<Effect>;
options: EffectOptions;
shouldTrack: boolean;
}
/**
* 创建副作用函数
* @example
* ```ts
* const count = ref(0);
* effect(() => {
* console.log(count.value);
* })
* count.value = 1;
* // 打印1
* ```
* @param func 函数
* @param options 配置
* @returns effectFunc
*/
export declare function effect(func: Function, options?: EffectOptions): Effect;
/**
* 获取计算属性
* @example
* ```ts
* const count = ref(0);
* const double = computed(() => count.value * 2);
* console.log(double.value); //0
* count.value = 1;
* console.log(double.value); //2
* ```
* @param getter
* @returns computed
*/
export declare function computed<T>(getter: () => {
readonly value: T;
}): {
readonly value: any;
};
export interface watchCallback {
(oldVal: any, newVal: any, onInvalidate: Function): void;
}
/**
* 监听响应式数据
* @example
* ```ts
* const count = ref(0);
* watch(count, (newVal, oldVal) => {
* console.log(newVal, oldVal);
* })
* count.value = 1;
* // 打印1 0
* ```
* @param source 副作用函数或者响应式对象
* @param cb 数据变化后回调函数
* @param options 配置
*/
export declare function watch(source: Function | object, cb: watchCallback, options?: EffectOptions): void;
/**
* 获取原始对象
* @example
* ```ts
* const count = reactive({ a: 1 });
* console.log(toRaw(count)); //{ a: 1 }
* ```
* @param proxy 响应式对象
* @returns 原始对象
*/
export declare function toRaw<T>(proxy: T): T;