Первое: const { ...styling } = styles;
- это то же самое, что и const styling = styles;
Но вы можете вообще пропустить это, просто используйте [...] = useState(styles)
setStyle()
, чтобы принять функцию, которая получает токГосударство, в вашем случае стиль.Таким образом, вы можете использовать оператор распространения ...
для создания нового объекта и добавления к нему значений.
setStyle(style => ({ ...style, font: { ...style.font, align: event.target.value } ) ) );
Выше код использует функцию Arrow, это также можно записать как обычную функцию, но, вероятно, легче понять:
setStyle( function (style) {
return {
...style,
font: {
...style.font,
align: 'center'
}
}
});
Ваш console.log
в setStyle
отображает текущий стиль, так как измененный стиль будет виден при следующем рендере.Поэтому я передвинул console.log
перед возвратом.
const [style, setStyle] = useState(styles);
console.log(style);
return (
<RadioButtonGroup
onChange={(event) => {
setStyle(style => ({ ...style, font: { ...style.font, align: event.target.value } ) ) );
}}
/>);
Вот несколько ссылок, которые помогут вам понять все это: