import React, { forwardRef, useImperativeHandle, useRef } from 'react'; import { KeyValuePair } from "./KeyValuePair"; import { AddButton } from "../ui/buttons/AddButton"; import { RemoveButton } from "../ui/buttons/RemoveButton"; export const KeyValueForm = forwardRef((props, ref) => { const [numberOfPairs, setNumberOfPairs] = React.useState(1); const keyValuePairRefs = useRef<{ getKeyValuePair: () => { key: string, value: string } }[]>([]); useImperativeHandle(ref, () => ({ getObject() { let reducedObject = {}; for (let i = 0; i < numberOfPairs; i++) { const keyValuePair = keyValuePairRefs.current[i]?.getKeyValuePair(); if (keyValuePair) { reducedObject = { ...reducedObject, [keyValuePair.key]: keyValuePair.value } } } return reducedObject; } })); return (
{ new Array(numberOfPairs).fill(1).map((_, index) => { return keyValuePairRefs.current[index] = el} /> }) } setNumberOfPairs(numberOfPairs + 1)} hoverEffect={false} /> setNumberOfPairs(numberOfPairs - 1)} />
); });