React useMap хук

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабе мы будем изучать хук useMap в React, который создает состояние Map объекта и набор функций для его управления. Используя этот хук, мы можем легко управлять и обновлять пары ключ-значение в наших компонентах React, не пишетя сложной и ошибочным логикой. Эта лабораторная работа проведет вас через реализацию хука useMap и покажет его использование в образце приложения.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL react(("React")) -.-> react/FundamentalsGroup(["Fundamentals"]) react(("React")) -.-> react/AdvancedConceptsGroup(["Advanced Concepts"]) react(("React")) -.-> react/StateManagementGroup(["State Management"]) react(("React")) -.-> react/PerformanceOptimizationGroup(["Performance Optimization"]) react/FundamentalsGroup -.-> react/jsx("JSX") react/FundamentalsGroup -.-> react/event_handling("Handling Events") react/AdvancedConceptsGroup -.-> react/hooks("React Hooks") react/StateManagementGroup -.-> react/use_state_reducer("Using useState and useReducer") react/PerformanceOptimizationGroup -.-> react/memoization("Memoization with useMemo") subgraph Lab Skills react/jsx -.-> lab-38394{{"React useMap хук"}} react/event_handling -.-> lab-38394{{"React useMap хук"}} react/hooks -.-> lab-38394{{"React useMap хук"}} react/use_state_reducer -.-> lab-38394{{"React useMap хук"}} react/memoization -.-> lab-38394{{"React useMap хук"}} end

React useMap хук

В ВМ уже предоставлены index.html и script.js. В общем, вам нужно только добавить код в script.js и style.css.

  • Хук useMap() создает состояние Map объекта и набор функций для его управления с использованием React-хуков.
  • Хук useState() инициализирует состояние Map с initialValue.
  • Хук useMemo() создает набор не-модифицирующих действий, которые манипулируют переменной состояния map, используя установщик состояния для создания новой Map каждый раз.
  • Хук useMap() возвращает массив, содержащий переменную состояния map и созданные actions.
  • Компонент MyApp использует хук useMap() для инициализации состояния Map объекта и предоставляет кнопки для добавления, сброса и удаления элементов из Map.
  • Функция JSON.stringify() форматирует Map объект в читаемую JSON строку.
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 onClick={handleAdd}>Add</button>
      <button onClick={handleReset}>Reset</button>
      <button onClick={handleRemove} disabled={!map.has("apples")}>
        Remove apples
      </button>
      <pre>{JSON.stringify(Object.fromEntries(map), null, 2)}</pre>
    </div>
  );
};

ReactDOM.createRoot(document.getElementById("root")).render(<MyApp />);

Пожалуйста, нажмите на кнопку 'Go Live' в нижнем правом углу, чтобы запустить веб-сервис на порту 8080. Затем вы можете обновить вкладку Web 8080, чтобы просмотреть веб-страницу.

Резюме

Поздравляем! Вы завершили лабораторную работу по React useMap хук. Вы можете практиковаться в более лабораторных работах в LabEx, чтобы улучшить свои навыки.