Примечание: новый экземпляр объекта необходим для повторного рендеринга, это основная концепция реакции
const UserMeta = () => {
const [user, setUser] = useState(new User('name', 'age' ... 100 fields));
return (
<button onClick={() => setUser(new User('customName' ... 101 values via User.getSomething()))}>
Update Name
</button>
)
}
Выглядит как накладные расходы, когда мы можем сделать
const UserMeta = () => {
const [user, setUser] = useState(new User('name', 'age' ... 100 fields));
return (
<button onClick={() => setUser({ name: 'customName', ...user })}>
Update Name
</button>
)
}
Но в этом случае после нажатия кнопки наш пользователь будет объектом с другими вещами из класса User
:(, такими как getName () и т. Д. c ...
Этот вариант лучше
const UserMeta = () => {
const [user, setUser] = useState({ name: 'name', age: 'age' ... 100 fields));
return (
<button onClick={() => setUser({ name: 'Custom, ...user })}>
Update Name
</button>
)
}
Если вы хотите использовать модели, пожалуйста, прочитайте эту статью * 1014. * С помощью TS вы можете предотвратить "забытые свойства" и т. Д. c.
FE
const UserMeta: React.FC = () => {
const [user, setUser] = useState<UserModel>({ name: 'name', age: 'age' ... 100 fields));
return (
<button onClick={() => setUser({ name: 'customName', ...user })}>
Update Name
</button>
)
}