fix(web/menu): don't call onSideScroll when opening the menu (#123)

* fix(web/features/menu/list): don't call onSideScroll when opening the menu

* refactor(web/menu): use conventional ref naming

Conventional ref variable names contain the word `ref` or `refs` if it's an array

Co-authored-by: Luke <sabolukas03@gmail.com>
This commit is contained in:
BerkieBb
2022-10-11 14:26:59 +02:00
committed by GitHub
parent 2813bb288b
commit 5c34948528

View File

@@ -36,6 +36,7 @@ const ListMenu: React.FC = () => {
const [visible, setVisible] = useState(false);
const [indexStates, setIndexStates] = useState<Record<number, number>>({});
const listRefs = useRef<Array<HTMLDivElement | null>>([]);
const firstRenderRef = useRef(false);
const closeMenu = (ignoreFetch?: boolean, keyPressed?: string, forceClose?: boolean) => {
if (menu.canClose === false && !forceClose) return;
@@ -87,6 +88,10 @@ const ListMenu: React.FC = () => {
useEffect(() => {
if (!menu.items[selected]?.values) return;
if (firstRenderRef.current) {
firstRenderRef.current = false;
return;
}
const timer = setTimeout(() => {
fetchNui('changeIndex', [selected, indexStates[selected]]).catch();
}, 100);
@@ -122,6 +127,7 @@ const ListMenu: React.FC = () => {
useNuiEvent('closeMenu', () => closeMenu(true, undefined, true));
useNuiEvent('setMenu', (data: MenuSettings) => {
firstRenderRef.current = true;
if (!data.startItemIndex || data.startItemIndex < 0) data.startItemIndex = 0;
else if (data.startItemIndex >= data.items.length) data.startItemIndex = data.items.length - 1;
setSelected(data.startItemIndex);