UNPKG

z-util-page

Version:
146 lines (145 loc) 3.38 kB
/** * @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;