Сбросить значение у input'a в дефолтное, приходящее из пропсов

Из пропсов приходит имя, это имя копируется в useState, через onChange я меняю это значение, но так же я могу закрыть инпут и хочу, чтобы в useState оставалось старое значение прешедшее из пропсов, а не измененное через onChange.

setCopy(name) в 12 строчке - хорошая практика или плохая?

const element = document.getElementById("root");

const User = (props) => {
  const { name } = props;

  const [ copy, setCopy ] = React.useState(name);
  const [ isEdit, setIsEdit ] = React.useState(false);

  const edit = () => setIsEdit(true);
  const close = () => {
    setIsEdit(false);
    setCopy(name);
  };
  const change = (event) => setCopy(event.target.value);

  return (
    <>
      {isEdit
        ? <>
            <input type="text" value={copy} onChange={change} />
            <button>Сохранить</button>
            <button onClick={close}>Закрыть</button>
          </>
        : <>
            <h1>Меня зовут {name}</h1>
            <button onClick={edit}>Редактировать</button>
        </>
      }
    </>
  )
};

const App = () => {
  const [ users, setUsers ] = React.useState([]);
  const [ name, setName ] = React.useState("");

  const onName = (event) => {
    setName(event.target.value);
  };

  const addUser = () => {
    setUsers([ ...users, { name: name, id: Date.now() } ]);
    setName("");
  };

  return (
    <>
      <input type="text" onChange={onName} />
      <button disabled={name.length === 0} value={name} onClick={addUser}>Добавить пользователя</button>
      {users.length !== 0 && users.map(item => <User name={item.name} />)}
    </>
  )
};

ReactDOM.render(
  <App />,
  element
);

Ответы (0 шт):