InputContext
import React, { useEffect, useRef } from 'react';
import { useInputContext, RPGMakerKeys } from '../../components/InputContext';
const PagedList: React.FC<{ hasFocus: boolean }> = ({ hasFocus }) => {
const input = useInputContext();
const idRef = useRef(`PagedList_${Math.random().toString(36).slice(2)}`);
useEffect(() => {
if (!hasFocus) return; // only active when focused
const id = idRef.current;
input.addEventListener(id + '_down', 'trigger', RPGMakerKeys.DOWN, () => {
// move selection down
return true; // consume
});
input.addEventListener(id + '_up', 'trigger', RPGMakerKeys.UP, () => {
// move selection up
return true;
});
input.addEventListener(id + '_ok', 'trigger', RPGMakerKeys.OK, () => {
// confirm selection
return true;
});
return () => {
input.removeEventListener(id + '_down');
input.removeEventListener(id + '_up');
input.removeEventListener(id + '_ok');
};
}, [hasFocus]);
return <div>...</div>;
};Last updated