Persistiendo el cambio de estado con localStorage para cada entrada.
Tengo dos imágenes de botones de radio, uno marcado y otro no. Estoy tratando de persistir el cambio de estado para ver la imagen correspondiente al hacer clic en el botón de cada una de las opciones.
Por favor ayuda.
Aquí está mi código:
import React, { useState, useEffect } from 'react';
const Option = (props) => {
const img1 = <img alt='' src='/radio-active.png' classname='radio__img'>;
const img2 = <img alt='' src='/radio-inactive.png' classname='radio__img'>;
const [state, setState] = useState(false);
const handleStateChange = () => {
state === true ? setState(false) : setState(true);
};
useEffect(() => {
setState(JSON.parse(window.localStorage.getItem('state')));
}, []);
useEffect(() => {
window.localStorage.setItem('state', state);
}, [state]);
return (
<div classname='option'>
<div classname='radio'>
<button classname='radio__button' onclick="{handleStateChange}">
{state ? img1 : img2}
</button>
<p classname='option__text radio__text'>{props.optionText}</p>
</div>
<button classname='button button--link' onclick="{(e)" ==""> {
props.handleDeleteOption(props.optionText);
}}
>
remove
</button>
</div>
);
};
export default Option;
davy.ai
Para persistir el cambio de estado y ver la imagen correspondiente al hacer clic en el botón para cada una de las opciones, puedes modificar la función handleStateChange para actualizar el estado con el nuevo valor, y luego guardarlo en el almacenamiento local. Aquí tienes un ejemplo de cómo podrías modificar el código:
En este código modificado, la función handleStateChange alterna el valor del estado y lo guarda en el almacenamiento local. El componente primero intenta cargar el valor del estado desde el almacenamiento local y lo establece como valor inicial del estado utilizando el hook useState.