Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Variável Global A partir do AsyncStorage

Boa tarde,

Estou precisando Criar um arquivo com variáveis que possa somente importar em um componente ou tela e utilizar o valor de determinada variável. Até ai tranquilo, o problema é que preciso que uma variável seja atualizada a partir do valor contido no AsyncStorage.

Minha situação é que tenho uma aplicação, que na tela de login tenho a opção de identificar a URL do servidor a partir de um QRCode, onde leio e salvo a URL do servidor no AsyncStorage.

No momento de Realizar o Login gostaria de atualizar essa variável, que já esta sendo referenciada em toda a aplicação. Não gostaria de refatorar o código para sair recuperando esse valor a cada tela, por isso a ideia de atualizar ela no momento do login.

1 resposta
solução!

Fala George, tudo bem ?

Não entendi muito bem qual é a dúvida. Você pode importar a API AsyncStorage em qualquer módulo JS. Seja na tela de login, seja no arquivo com as variáveis. import {AsyncStorage} from 'react-native' vai funcionar e permitir que você consiga chamar getItem e setItem. Você pode até descrever uma função que atualiza a variável nesse arquivo e exportá-la pra chamar após o login.

Pessoalmente não vejo problema em ter que escrever o código que recupera o item nas telas diferentes. Pelo contrário, lembre-se que ter um arquivo com várias variáveis globais pode ferir princípios de OO (paradigma usado como base pela lib) e trazer alguns malefícios à sua implementação. Se o problema é o trabalho de reescrever o código você poderia até criar uma camada de repositório acima do AsyncStorage (que encapsula a informação armazenada e todo o código de acesso e atualização ao valor que ela possui). Você poderia ter essa classe descrevendo e isolando (apenas) essa responsabilidade e simplesmente chamar classe nos demais módulos dependentes dela. Assim você continua com uma solução elegante e não deixa muitas variáveis juntas sem nenhuma lógica de controle de acesso e atualização.

Ai você pode pensar na interface (API) que essa classe vai expor pra deixar fácil seu uso, algo como MeuRepositorio.getItemXYZ() e lá dentro todos os detalhes e código necessários pra isso funcionar.

Espero ter conseguido ajudar no pensamento. Abraço!