Introdução
Neste laboratório, exploraremos o hook useMap em React, que cria um objeto Map com estado e um conjunto de funções para manipulá-lo. Ao usar este hook, podemos facilmente gerenciar e atualizar pares chave-valor em nossos componentes React sem ter que escrever lógicas complexas e propensas a erros. Este laboratório irá guiá-lo através da implementação do hook useMap e demonstrar seu uso em uma aplicação de exemplo.
React useMap Hook
index.htmlescript.jsjá foram fornecidos na VM. Em geral, você só precisa adicionar código ascript.jsestyle.css.
- O hook
useMap()cria um objetoMapcom estado e um conjunto de funções para manipulá-lo usando hooks React. - O hook
useState()inicializa o estadoMapcom oinitialValue. - O hook
useMemo()cria um conjunto de ações não mutáveis que manipulam a variável de estadomapusando o setter de estado para criar um novoMapa cada vez. - O hook
useMap()retorna um array contendo a variável de estadomape asactionscriadas. - O componente
MyAppusa o hookuseMap()para inicializar o objetoMapcom estado e fornece botões para adicionar, resetar e remover itens doMap. - A função
JSON.stringify()formata o objetoMapem uma string JSON legível.
const useMap = (initialValue) => {
const [map, setMap] = React.useState(new Map(initialValue));
const actions = React.useMemo(
() => ({
set: (key, value) =>
setMap((prevMap) => {
const nextMap = new Map(prevMap);
nextMap.set(key, value);
return nextMap;
}),
remove: (key) =>
setMap((prevMap) => {
const nextMap = new Map(prevMap);
nextMap.delete(key);
return nextMap;
}),
clear: () => setMap(new Map())
}),
[setMap]
);
return [map, actions];
};
const MyApp = () => {
const [map, { set, remove, clear }] = useMap([["apples", 10]]);
const handleAdd = () => set(Date.now(), new Date().toJSON());
const handleReset = () => clear();
const handleRemove = () => remove("apples");
return (
<div>
<button
<button
<button disabled={!map.has("apples")}>
Remove apples
</button>
<pre>{JSON.stringify(Object.fromEntries(map), null, 2)}</pre>
</div>
);
};
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 useMap Hook. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.