Скажем, у меня есть этот родитель
const Parent = () => <ChildComponent foo = {<Button>clic</Button>} />
почему этот код работает
class ChildComponent extends React.Component {
render() {
return (
<div>
{this.props.foo}
</div>
)
}
}
а этого кода нет?
class ChildComponent extends React.Component {
constructor(props) {
super(props)
const ParentButton = this.props.foo
}
render() {
return (
<div>
<ParentButton />
</div>
)
}
}
Мне нужно что-то вроде второго примера, чтобы добавить какое-то событие в ParentButton.
Я бы хотел, чтобы этот пример работал с определенным классом компонентом
Обновлять :
На основании ответа у меня теперь есть частичное решение
class ChildComponent extends React.Component {
constructor(props) {
super(props)
this.ParentButton = this.props.foo
}
render() {
return (
<div>
{this.ParentButton}
</div>
)
}
}





Вы не назначаете ParentButton на ChildComponent.
В настоящее время у вас есть const, плавающий в конструкторе, поскольку ключевые слова const, let и var имеют область действия / блока.
this. ParentButton = this.props.foo и лаконично <this. ParentButton > в вашей функции рендеринга предоставят вам то, что вам нужно.
@Yvain Избавьтесь от {} и визуализируйте его как <this.ParentButton />, поскольку это компонент.
Я отмечаю это как ответ по части прицела. что касается рендеринга <this.ParentButton>, не работают. (Тип элемента недействителен: ожидается строка (для встроенных компонентов) или класс / функция (для составных компонентов), но получено: объект.)