lodash下的clamp使用
watch(
isActive,
(active) => {
const el = textareaRef.value;
if (!el) return;
el.style.height = active ? "" : `${clamp(24, el.scrollHeight, 381)}px`;
},
{ flush: "post" },
);
代码分析
Lodash 的 clamp 函数定义如下:
clamp(number, lower, upper)
它的作用是将 number 限制在 lower 和 upper 之间:
如果 number < lower,返回 lower
如果 number > upper,返回 upper
否则返回 number 本身
{ flush: "post" }:
表示在 DOM 更新之后 再触发 watch 的回调函数。
用于确保 DOM 变更(例如 v-if, v-show 的切换)已经完成,从而能正确读取 el.scrollHeight。
这个 watch 的主要作用是:
动态调整 <textarea> 的高度,根据是否“激活”来控制。
如果 isActive 为 false,则将 <textarea> 的高度设为其内容高度(受限于 24~381px)。
如果 isActive 为 true,则清除固定高度,让其恢复自动调整(例如用于用户输入时自动扩展)。
