Realmente no estoy seguro de lo que estoy haciendo mal
Por favor ayuda...
¿Hay una mejor manera de acceder a una variable declarada dentro de useEffect?
Gracias
Así que tengo el siguiente código, pero aparece el error: [TypeError: "setDevice" is read-only]
const [device, setDevice] = useState( '' ); React.useEffect(() => { const device_id = async () => { var DeviceInfo = require('react-native-device-info'); var deviceId = DeviceInfo.getUniqueId(); const filePath = RNFS.DocumentDirectoryPath + deviceId + "_secret.json"; if (await RNFS.exists(filePath)){ RNFS.readFile(filePath, 'utf8') .then((contents) => { try{ // setDev = String(contents); var JSONObject = JSON.parse(contents); console.log(JSONObject['device_id']); setDevice = JSONObject['device_id']; }catch(err){ console.log("Error: ", err); } }); console.log("FILE EXISTS: " + filePath); } else { function makeid() { var text = ""; var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; for (var i = 0; i < 5; i++) text += possible.charAt(Math.floor(Math.random() * possible.length)); return text; } var dev_id = makeid() + deviceId; var id = '{"device_id" : "'+dev_id+'"}'; RNFS.writeFile(filePath, id, 'utf8') .then((success) => { console.log('FILE WRITTEN!'); navigation.dispatch(resetReachOutPreferences) }) .catch((err) => { console.log(err.message); }); } } device_id(); }, []); console.log("ID: " + device);He intentado useState (null)
De la documentación de React en el gancho de estado :
¿Qué devuelve useState? Devuelve un par de valores: el estado actual y una función que lo actualiza.
Entonces, en este caso, setDevice es una función que se puede usar para actualizar el valor del device (que se reflejará en los renderizados posteriores). En lugar de asignarlo, debe llamarlo con el nuevo valor como argumento, por ejemplo:
setDevice(contents);