Necesito que al apretar un boton se haga un chequeo de estado, y dependiendo del resultado se haga una cosa u otra. Básicamente, verifique que no haya un campo de "valor" vacío y, en ese caso, redirija a otra página de la aplicación. Con código se ve mejor:
const [formData, setFormData] = useState<ISignUpFormData>({ username: { value: "", valid: true, unique: true }, email: { value: "", valid: true, unique: true }, password: { value: "", valid: true }, birthdate: { value: "", valid: true }, }); const handleClick = async (e:any) => { let canContinue = true; const keys = Object.keys(formData); keys.forEach(key => console.log()) // ??? keys is an array of strings, i need to access to "username".value to check if it is "" o not }Los campos de valor se rellenan con entradas controladas
Mi pregunta es: ¿cómo hago un bucle a través de las claves de un objeto cuyos valores son otro objeto?
Puede usar Object.entries para obtener la clave y el valor y luego verificar si alguno de los valores tiene una cadena vacía.
Algunas implementaciones ingenuas a continuación.
Consulte esto: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries
const object1 = { username: { value: "", valid: true, unique: true }, email: { value: "", valid: true, unique: true }, password: { value: "", valid: true }, birthdate: { value: "", valid: true }, } let hasEmptyString = false; for (const [key, formKey] of Object.entries(object1)) { if(formKey.value === ""){ hasEmptyString = true break } } if(!hasEmptyString){ // redirect to } console.log(hasEmptyString)Puede usar Object.values() y find() ... devolverá undefined si no hay una entrada con una cadena vacía
const [formData, setFormData] = useState<ISignUpFormData>({ username: { value: "", valid: true, unique: true }, email: { value: "", valid: true, unique: true }, password: { value: "", valid: true }, birthdate: { value: "", valid: true }, }) const handleClick = () => { const hasEmptyString = Object.values(formData).find(obj => obj.value === ''); //Returns object with empty string id there is any //returns undefined if there is not entry with empty string console.log(hasEmptyString); }