Introdução
Neste laboratório, aprenderemos a usar o hook useSessionStorage em React para persistir valores de estado no sessionStorage. Aprenderemos como inicializar o valor de forma preguiçosa (lazily), recuperar e armazenar valores usando Storage.getItem() e Storage.setItem(), e como atualizar a variável de estado usando a função definida. Ao final deste laboratório, você terá uma melhor compreensão de como usar o sessionStorage para armazenar e recuperar dados dentro de uma aplicação React.
Hook React useSessionStorage
index.htmlescript.jsjá foram fornecidos na VM. Em geral, você só precisa adicionar código ascript.jsestyle.css.
Para criar um valor de estado que é persistido no sessionStorage, e uma função para atualizá-lo, siga estes passos:
- Use o hook
useState()com uma função para inicializar seu valor de forma preguiçosa (lazily). - Use um bloco
try...catcheStorage.getItem()para tentar obter o valor doWindow.sessionStorage. Se nenhum valor for encontrado, useStorage.setItem()para armazenar odefaultValuee usá-lo como o estado inicial. Se ocorrer um erro, usedefaultValuecomo o estado inicial. - Defina uma função que irá atualizar a variável de estado com o valor passado e use
Storage.setItem()para armazená-lo.
Aqui está um exemplo de implementação:
const useSessionStorage = (keyName, defaultValue) => {
const [storedValue, setStoredValue] = React.useState(() => {
try {
const value = window.sessionStorage.getItem(keyName);
if (value) {
return JSON.parse(value);
} else {
window.sessionStorage.setItem(keyName, JSON.stringify(defaultValue));
return defaultValue;
}
} catch (err) {
return defaultValue;
}
});
const setValue = (newValue) => {
try {
window.sessionStorage.setItem(keyName, JSON.stringify(newValue));
} catch (err) {}
setStoredValue(newValue);
};
return [storedValue, setValue];
};
Você pode usar este hook em seu aplicativo assim:
const MyApp = () => {
const [name, setName] = useSessionStorage("name", "John");
return <input value={name} => setName(e.target.value)} />;
};
ReactDOM.createRoot(document.getElementById("root")).render(<MyApp />);
Por favor, clique em 'Go Live' no canto inferior direito para executar o serviço web na porta 8080. Em seguida, você pode atualizar a aba Web 8080 para visualizar a página web.
Resumo
Parabéns! Você concluiu o laboratório React useSessionStorage Hook. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.