Tengo una lista de botones que cambian un estado, una cadena (que se usa para decidir si se muestra un modal y como título para este modal). Qué debería pasar :
Los puntos 1 y 3 funcionan bien. Pero 2 no lo es. Así que decidí poner algunos console.logs allí. Si inicio sesión dentro de un useEffect vinculado a mi estado: el estado del título cambia en cada clic de botón que debería cambiarlo pero nunca se borra.
Así que inicié sesión dentro de la función del controlador (activada cuando se hace clic en un botón):
Así que ahí está, no tiene ningún sentido para mí. Aquí hay partes de mi código si ayuda:
const [logsModalTitle, setLogsModalTitle] = useState(""); ... const handlingLogs = (inputClause) => { console.log("handling logs : ", showLogsModal, logsModalTitle); if (`${inputClause.name}(${inputClause.label})` === logsModalTitle) { setLogsModalTitle(""); } else { setLogsModalTitle(`${inputClause.name}(${inputClause.label})`); } }; ... <MyCustomButton buttonInnerText="ERROR" buttonSize="medium" buttonActionFunctionOne={handlingLogs} buttonActionPropOne={input.clauses[i]} /> ... useEffect(() => { console.log(logsModalTitle); }, [logsModalTitle]);¿Alguna idea sobre lo que está causando este problema?
en mi opinión, es un código realmente extraño, pero esto puede funcionar:
const handlingLogs = (inputClause) => { if (`${inputClause.name}(${inputClause.label})` === logsModalTitle) { setLogsModalTitle(""); setShowLogsModal(false); } else { setShowLogsModal(true); setLogsModalTitle(`${inputClause.name}(${inputClause.label})`); } }; y puede usar solo un estado como showLogsModal = logsModalTitle !== "";
const [logsModalTitle, setLogsModalTitle] = useState(""); const handlingLogs = (inputClause) => { if (`${inputClause.name}(${inputClause.label})` === logsModalTitle) { setLogsModalTitle(""); } else { setLogsModalTitle(`${inputClause.name}(${inputClause.label})`); } }; const showLogsModal = logsModalTitle !== "";