TGViewer
Free React For Beginners Free React For Beginners @reactbeginners · 3.04K subscribers
Post #262 1.39K
Ось ще один приклад з життя (максимально спрощений)

🗒 Маємо компонент який тримає в собі стейт моделі і керує діалогом з формою. Модель виконана у вигляді масиву об'єктів із value в середині, методу оновлення стейту немає взагалі.

export default function App() {
const [isOpen, setIsOpen] = useState(false);
const [fields] = useState([{ value: "test" }]);
const closeDialog = () => setIsOpen(false);
const openDialog = () => setIsOpen(true);

return (
<>
<button onClick={openDialog}>Open edit dialog</button>
<dialog open={isOpen}>
<Form initialFields={fields} onCancel={closeDialog} />
</dialog>
</>
);
}

🗒 Маємо другий компонент - форму, яка, приймає початкові дані і тримає їх у власному, окремому, стейті. На формі є кнопка з типом reset, яка при натисканні очищує форму та закриває діалог.

function Form({ initialFields, onCancel }) {
const [fields, setFields] = useState(initialFields);
const setField = (e, field) => {
field.value = e.target.value;
setFields([...fields]);
};
return (
<form>
{fields.map((field, i) => (
<input key={i} value={field.value} onChange={(e) => setField(e, field)} />
))}
<button type="reset" onClick={onCancel}>
Cancel
</button>
</form>
);
}

Проблема (вибачте, виклик!) полягає в тому, що, якщо ви відредагуєте поле і закриєте форму, а потім її знову відкриєте, то побачити внесені зміни. Незважаючи на reset і не зважаючи що метод setFields батьківскього компоненту взагалі не існує.

❓В задачі питається: де баг і що треба зробити з розробником цієї диверсії ❓

П.С. Дякую пану Ярославу за наведений приклад.
  • 👍 10
More from @reactbeginners
  1. Sep 29, 2026Як і обіцяв - про БЗВП по свіжих слідах (і заодно про процес). У знайомого злетіло бронюва…
  2. Sep 26, 2026Думаю багатьом буде цікаво щось дізнатися про розробоку в ЗСУ Спробою розповісти трохи тог…
  3. Sep 24, 2026Всім привіт. Давно не бачилися, але до телеграму руки все ніяк не доходили. В лінкедині я…
  4. May 24, 2026Київ, співчуваю. Сам сьогодні в цю ніч був на лукьянівці. Як на мене, найважча ніч за всі.…
  5. Dec 31, 2025З новим Роком. Нехай це буде останній рік війни. А росія нехай отримує те на що заслужила.…
  6. Nov 29, 2025Сподіваюся всі живі. Схоже що це був рекордний наліт. Як бачите - путін не зацікавлений в…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →