问题遇到的现象和发生背景
需求是这样的,在vue页面中有这样一个响应式对象,还有一个下一步的按钮,下一步的按钮默认是禁用状态,因为该对象中每个数据的值都是false,而启用的条件就是三个值都有值的情况下才会启用
const pickerValue = ref<{
[key: string]: string;
}>({
tem: "",
building: "",
date: ""
});
所有需要这么一个函数来监听传入值的变化,但是这样传值找到具体的 pickerValue.value.date 会丢失响应性
const disabledNext = useCheckEmptyValues([pickerValue.value.tem, pickerValue.value.building, pickerValue.value.date]);
所以,还有其他办法没有
不能创建多个变量记录状态,
useCheckEmptyValues 方法负责传入值的空值判断,如果全传入的值中但凡有一个值正常值状态,则返回false,否则返回true
返回的状态要用于按钮的disabled状态,所以返回的状态需要是一个响应式变量
useCheckEmptyValues 方法必须是个通用方法,不一定会传入哪些值,所以要有很高的适应性
import { ref, watch } from "vue";
function useCheckEmptyValues(values) {
const allValuesFilled = ref(false);
return allValuesFilled;
}
export default useCheckEmptyValues;