Estoy tratando de establecer el Estado en algo que puede ser verdadero, falso o nulo. Tengo problemas y busco una forma limpia de codificar
No funciona
setFullCalendar(await AsyncStorage.getItem('@calendar') === 'true' || null ? true: false);Funciona pero no puedo establecer si es nulo
setFullCalendar(await AsyncStorage.getItem('@calendar') === 'true' ? true: false);Funciona pero no limpia. (no limpio porque tengo más de 10 de estos por hacer)
const checkStorage = await AsyncStorage.getItem('@calendar') if(checkStorage == 'true'){ setFullCalendar(true) } else if (checkStorage !== null){ setFullCalendar(true) } else{ setFullCalendar(false) }Dado que solo es false si el valor es null , simplemente compare con eso:
const checkStorage = await AsyncStorage.getItem('@calendar'); setFullCalendar(checkStorage !== null);Puede usar la doble negación para eliminar valores falsos como nulo, indefinido, falso, "", etc. y obtener el resultado booleano correcto, tenga en cuenta que los objetos vacíos y las matrices vacías son valores verdaderos, no falsos.
setFullCalendar(!!(await AsyncStorage.getItem('@calendar')));o use el objeto booleano para obtener el resultado booleano de esa acción asíncrona
setFullCalendar(Boolean(await AsyncStorage.getItem('@calendar')))