Add useMemo to sidebar button function to prevent unecessary remounting of components

This commit is contained in:
Daniel S. Hansen
2025-08-13 12:55:33 -07:00
parent 5e2364334f
commit 846afa3eac
2 changed files with 13 additions and 11 deletions
+8 -9
View File
@@ -9,7 +9,7 @@ import { HiUsers } from "react-icons/hi2";
import { VscThreeBars } from "react-icons/vsc";
import { MdOutlineSecurity } from "react-icons/md";
import { IoPersonCircleSharp } from "react-icons/io5";
import { useState, useEffect } from "react";
import { useState, useEffect, useMemo } from "react";
import { DASHBOARD_VIEWS } from "@/constants/viewKeys";
export default function Sidebar({ view, onChangeView, darkMode, setDarkMode }) {
@@ -19,22 +19,21 @@ export default function Sidebar({ view, onChangeView, darkMode, setDarkMode }) {
const styles = recipe();
const { toggleColorMode } = useColorMode();
let buttons = [];
// Different Sidebar Button Options for Settings View
if (view === "settings" || view === "personal" || view === "security") {
buttons = [
const buttons = useMemo(() => {
if (["settings", "personal", "security"].includes(view)) {
return [
{icon: IoPersonCircleSharp, name: "Personal Info", view: "personal"},
{icon: MdOutlineSecurity, name: "Security", view: "security"},
]
} else {
buttons = [
];
}
return [
{icon: FaHome, name: "Home", view: "mydashboard"},
{icon: FaGlobeAmericas, name: "Global Map", view: "global"},
{icon: FaMapMarkerAlt, name: "Regional Map", view: "regional"},
{icon: FaVolcano, name: "Volcano", view: "volcano"},
{icon: HiUsers, name: "Admin", view: "admin"}
];
};
}, [view]);
const toggleSidebar = () => {
if (isOpen) setIsOpen(false);
+3
View File
@@ -12,4 +12,7 @@ export const VIEW_LABELS = {
regional: "Regional Map",
volcano: "Volcano",
admin: "Admin",
settings: "Settings",
personal: "Personal Info",
security: "Security",
};