Переключение значения вашего состояния так же просто, как инвертирование текущего значения, возвращенного из useState
.
Функциональные компоненты получают реквизиты, переданные им в качестве аргумента, поэтому нет необходимости использовать this.props
. Кроме того, чтобы установить свойства stati c для функционального компонента, вы можете просто установить их для самой функции.
function Toggler(props) {
const [on, setOn] = useState(props.defaultOnValue)
const toggle = () => {
setOn(!on)
}
return <div>{props.render(on, toggle)}</div>
}
Toggler.defaultProps = {
defaultOnValue: false
}
export default Toggler
С точки зрения льгот, вам решать, считаете ли вы, что оно того стоит для вашего случая. Нет особого преимущества c в использовании useState
, а не в компоненте, основанном на классах, однако, если вы хотите начать использовать другие ловушки или интегрироваться со сторонними библиотеками, используя ловушки, вы можете sh преобразовать некоторые из ваших компонентов к функциональным, где это необходимо.