diff --git a/src/pages/AdminInfoPageEditor.tsx b/src/pages/AdminInfoPageEditor.tsx index d92ec5c..3b885de 100644 --- a/src/pages/AdminInfoPageEditor.tsx +++ b/src/pages/AdminInfoPageEditor.tsx @@ -540,7 +540,12 @@ function FaqBuilder({ items, onChange, locale, localeLabel }: FaqBuilderProps) { const keyCounter = useRef(0); const [itemKeys, setItemKeys] = useState(() => items.map(() => keyCounter.current++)); - // Sync key count when items change externally (e.g., locale switch resets items) + // Regenerate all keys on locale switch (items are semantically different) + useEffect(() => { + setItemKeys(items.map(() => keyCounter.current++)); + }, [locale]); // eslint-disable-line react-hooks/exhaustive-deps + + // Sync key count when items added/removed within the same locale useEffect(() => { setItemKeys((prev) => { if (prev.length === items.length) return prev; @@ -580,7 +585,8 @@ function FaqBuilder({ items, onChange, locale, localeLabel }: FaqBuilderProps) { ); const handleAdd = useCallback(() => { - setItemKeys((prev) => [...prev, keyCounter.current++]); + const newKey = keyCounter.current++; + setItemKeys((prev) => [...prev, newKey]); onChange([...items, { q: '', a: '' }]); }, [items, onChange]); @@ -614,8 +620,6 @@ function FaqBuilder({ items, onChange, locale, localeLabel }: FaqBuilderProps) { [items, onChange], ); - void locale; - return (