import type { ChangeEvent } from 'react'; import type { FC } from '../../lib/teact/teact'; import React, { useRef, useState } from '../../lib/teact/teact'; const TestOrdered: FC<{}> = () => { const [items, setItems] = useState>({ a: 1, b: 5, c: 10 }); const [value, setValue] = useState(); const [isDesc, setIsDesc] = useState(false); const insertData = (newValue: number) => { const key = `key${Math.random()}`; setItems((currentItems) => ( { ...currentItems, [key]: newValue } )); setValue(undefined); }; const updateData = (key: string, newValue: number) => { setItems({ ...items, [key]: newValue }); }; const deleteData = (key: string) => { const newItems = { ...items }; delete newItems[key]; setItems(newItems); }; const addSmalls = () => { [-5, -10, -20].forEach(insertData); }; const addBigs = () => { [105, 110, 120].forEach(insertData); }; const handleInputChange = (e: ChangeEvent) => { setValue(Number(e.target.value)); }; const handleDescChange = (e: ChangeEvent) => { setIsDesc(e.target.checked); }; const sortedItems = Object .entries(items) .sort(([, value1], [, value2]) => (isDesc ? value2 - value1 : value1 - value2)); return (

insertData(value || 0)} value="Insert Ordered" />

    {sortedItems.map(([key, itemValue]) => ( updateData(key, Number(newValue))} // eslint-disable-next-line react/jsx-no-bind onDelete={() => deleteData(key)} /> ))}
); }; function MyComponent({ value, onChange, onDelete, }: { value: number; onChange: (newValue: string) => void; onDelete: NoneToVoidFunction; }) { const id = useRef(String(Math.random()).slice(-3)); const handleChange = (e: ChangeEvent) => { onChange(e.target.value); }; return ( // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions
  • {id.current}
  • ); } export default TestOrdered;