perf: add memo to react components

This commit is contained in:
SethBurkart123
2024-02-04 21:13:56 +11:00
parent 629a88a463
commit f5dfba2872
8 changed files with 25 additions and 15 deletions
+2 -1
View File
@@ -5,6 +5,7 @@ import logoDark from './assets/betterseqta-light-full.png';
import Shortcuts from './pages/Shortcuts'; import Shortcuts from './pages/Shortcuts';
import Picker from './components/Picker'; import Picker from './components/Picker';
import Themes from './pages/Themes'; import Themes from './pages/Themes';
import { memo } from 'react';
interface SettingsPage { interface SettingsPage {
standalone: boolean; standalone: boolean;
@@ -38,4 +39,4 @@ const SettingsPage = ({ standalone }: SettingsPage) => {
); );
}; };
export default SettingsPage; export default memo(SettingsPage);
@@ -1,4 +1,4 @@
import { ChangeEvent, useEffect, useState } from "react"; import { ChangeEvent, memo, useEffect, useState } from "react";
import { downloadPresetBackground, openDB, readAllData, writeData } from "../hooks/BackgroundDataLoader"; import { downloadPresetBackground, openDB, readAllData, writeData } from "../hooks/BackgroundDataLoader";
import presetBackgrounds from "../assets/presetBackgrounds"; import presetBackgrounds from "../assets/presetBackgrounds";
import "./BackgroundSelector.css"; import "./BackgroundSelector.css";
@@ -21,7 +21,7 @@ interface BackgroundSelectorProps {
isEditMode: boolean; isEditMode: boolean;
} }
export default function BackgroundSelector({ selectedType, setSelectedType, isEditMode }: BackgroundSelectorProps) { function BackgroundSelector({ selectedType, setSelectedType, isEditMode }: BackgroundSelectorProps) {
const [backgrounds, setBackgrounds] = useState<Background[]>([]); const [backgrounds, setBackgrounds] = useState<Background[]>([]);
const [selectedBackground, setSelectedBackground] = useState<string | null>(localStorage.getItem('selectedBackground')); const [selectedBackground, setSelectedBackground] = useState<string | null>(localStorage.getItem('selectedBackground'));
const [downloadedPresetIds, setDownloadedPresetIds] = useState<string[]>([]); const [downloadedPresetIds, setDownloadedPresetIds] = useState<string[]>([]);
@@ -205,4 +205,6 @@ export default function BackgroundSelector({ selectedType, setSelectedType, isEd
</div> </div>
</> </>
); );
} }
export default memo(BackgroundSelector);
+5 -3
View File
@@ -3,9 +3,9 @@ import { useSettingsContext } from '../SettingsContext';
import { motion } from "framer-motion"; import { motion } from "framer-motion";
import "./Picker.css"; import "./Picker.css";
import { useEffect, useState } from 'react'; import { memo, useEffect, useState } from 'react';
export default function Picker() { function Picker() {
const { settingsState, setSettingsState, showPicker, setShowPicker } = useSettingsContext(); const { settingsState, setSettingsState, showPicker, setShowPicker } = useSettingsContext();
const defaultPresets = [ const defaultPresets = [
@@ -123,4 +123,6 @@ export default function Picker() {
</div> </div>
</motion.div> </motion.div>
); );
} }
export default memo(Picker);
+2 -1
View File
@@ -1,3 +1,4 @@
import { memo } from 'react';
import { useSettingsContext } from '../SettingsContext'; import { useSettingsContext } from '../SettingsContext';
const PickerSwatch = () => { const PickerSwatch = () => {
@@ -16,4 +17,4 @@ const PickerSwatch = () => {
); );
}; };
export default PickerSwatch; export default memo(PickerSwatch);
+2 -1
View File
@@ -1,3 +1,4 @@
import { memo } from "react";
import { useSettingsContext } from "../SettingsContext"; import { useSettingsContext } from "../SettingsContext";
import "./Slider.css"; import "./Slider.css";
@@ -24,4 +25,4 @@ const Slider: React.FC<SliderProps> = ({ state, onChange }) => {
); );
}; };
export default Slider; export default memo(Slider);
+5 -2
View File
@@ -1,8 +1,9 @@
import { motion } from "framer-motion"; import { motion } from "framer-motion";
import "./Switch.css"; import "./Switch.css";
import type { SwitchProps } from "../types/SwitchProps"; import type { SwitchProps } from "../types/SwitchProps";
import { memo } from "react";
export default function Switch(props: SwitchProps) { function Switch(props: SwitchProps) {
const toggleSwitch = () => { const toggleSwitch = () => {
const newIsOn = !props.state; const newIsOn = !props.state;
props.onChange(newIsOn); props.onChange(newIsOn);
@@ -29,4 +30,6 @@ const spring = {
type: "spring", type: "spring",
stiffness: 700, stiffness: 700,
damping: 30 damping: 30
}; };
export default memo(Switch);
+2 -2
View File
@@ -1,4 +1,4 @@
import React, { useState, useRef, useEffect } from 'react'; import React, { useState, useRef, useEffect, memo } from 'react';
import { motion } from 'framer-motion'; import { motion } from 'framer-motion';
import type { TabbedContainerProps } from '../types/TabbedContainerProps'; import type { TabbedContainerProps } from '../types/TabbedContainerProps';
@@ -111,4 +111,4 @@ const TabbedContainer: React.FC<TabbedContainerProps> = ({ tabs }) => {
); );
}; };
export default TabbedContainer; export default memo(TabbedContainer);
+2 -2
View File
@@ -1,4 +1,4 @@
import { useEffect, useState } from "react"; import { memo, useEffect, useState } from "react";
import themesList from '../assets/themes'; import themesList from '../assets/themes';
import { listThemes, disableTheme, downloadTheme, setTheme, deleteTheme } from "../hooks/ThemeManagment"; import { listThemes, disableTheme, downloadTheme, setTheme, deleteTheme } from "../hooks/ThemeManagment";
@@ -171,4 +171,4 @@ const ThemeSelector = ({ selectedType, setSelectedType, isEditMode }: ThemeSelec
); );
}; };
export default ThemeSelector; export default memo(ThemeSelector);