wheneverEffectScope
wheneverEffectScope
- 监听传入值为 truthy 时, 创建一个 effect 作用域
- 当传入值改变但依旧为 truthy 时, 会停止之前创建的 effect 作用域并创建一个新的 effect 作用域
- 当值变为 falsy 时, 将会停止之前创建的 effect 作用域
演示
示例
ts
import { wheneverEffectScope } from '@mixte/use';
const source = ref(false);
const value = ref(1);
const value2 = ref(0);
// 当 `source` 为 truthy 时, 执行的 effect 作用域
wheneverEffectScope(source, (_value, _oldValue, _onCleanup) => {
// 监听 `value`, 同步值至 `value2`
watch(value, val => value2.value = val, {
immediate: true,
});
});
// 触发监听
source.value = true;
wheneverEffectScopeImmediate
immediate 为 true 的 wheneverEffectScope 方法
示例
ts
import { wheneverEffectScopeImmediate } from '@mixte/use';
const source = ref(true);
const value = ref(1);
const value2 = ref(0);
// immediate 为 true, 会立即触发监听, 执行的 effect 作用域
wheneverEffectScopeImmediate(source, (_value, _oldValue, _onCleanup) => {
// 监听 `value`, 同步值至 `value2`
watch(value, val => value2.value = val);
});
wheneverEffectScopeDeep
deep 为 true 的 wheneverEffectScope 方法
示例
ts
import { wheneverEffectScopeDeep } from '@mixte/use';
const source = ref({ a: 1 });
const value = ref(1);
const value2 = ref(0);
// 当 `source` 为 truthy 时或 `source` 内的值发生改变, 执行的 effect 作用域
wheneverEffectScopeDeep(source, (_value, _oldValue, _onCleanup) => {
// 监听 `value`, 同步值至 `value2`
watch(value, val => value2.value = val);
});
// 触发监听
source.value.a = 2;
wheneverEffectScopeImmediateDeep
immediate 和 deep 为 true 的 wheneverEffectScope 方法
示例
ts
import { wheneverEffectScopeImmediateDeep } from '@mixte/use';
const source = ref({ a: 1 });
const value = ref(1);
const value2 = ref(0);
// immediate 为 true, 会立即触发监听, 执行的 effect 作用域
// deep 为 true, 当 `source` 内的值发生改变, 执行的 effect 作用域
wheneverEffectScopeImmediateDeep(source, (_value, _oldValue, _onCleanup) => {
// 监听 `value`, 同步值至 `value2`
watch(value, val => value2.value = val);
});