Я только что выучил эти два паттерна. Я совершенно не понимаю, как правильно использовать этот шаблон.
Я создал компонент и пытаюсь применить эти шаблоны. Все работает так же.
Исходный код: https://codesandbox.io/s/n504v2njr4
class Toggle extends Component {
state = {
on: false,
}
onToggle = () => {
this.setState(({ on }) => ({ on: !on}));
}
getStateHelper = () => ({
on: this.state.on,
toggle: this.onToggle,
});
render() {
return this.props.children(this.getStateHelper())
}
}
использование
<Toggle>
{({on, toggle}) => (<button onClick = {toggle}>{on ? 'On' : 'Off'}</button>)}
</Toggle>
function ToggleHoc(Comp) {
return class ToggleHocWrap extends Component {
state = {
on: false,
}
onToggle = () => {
this.setState(({ on }) => ({ on: !on}));
}
getStateHelper = () => ({
on: this.state.on,
toggle: this.onToggle,
});
render() {
return (<Comp {...this.getStateHelper()} />)
}
}
}
использование
function TestToggle({ on, toggle }) {
return (<button onClick = {toggle}>{on ? 'On' : 'Off'}</button>)
}
const WithToggle = ToggleHoc(TestToggle);
Пожалуйста помогите!. Спасибо вам, ребята.
Я думаю, что я должен опубликовать в качестве ответа, чтобы другие могли ссылаться на ту же ссылку



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


На самом деле, есть некоторые проблемы с Mixin, а также с HOC, такие как состояние призрака и реквизиты. Кто бы ни использовал несколько Mixin и HOC в одном компоненте, им всегда нужно выяснить, кто устанавливает и передает реквизиты и состояние, - Конфликт имен - еще одна известная проблема. - И Mixin, и HOC используют статическую композицию.
В то время как реквизиты рендеринга не имеют вышеупомянутой проблемы, поскольку они используют динамическую композицию, поэтому конфликт имен отсутствует.
для получения дополнительной информации, пожалуйста, проверьте ссылку ниже.
Пожалуйста, избегайте ответа только по ссылке meta.stackexchange.com/questions/8231/…