[英]How to pass two callback to React.cloneElement
I am current passing two callback to a child component using 我目前通过使用两个回调传递给子组件
React.cloneElement
when inspecting my project I notice that activeRow
is always present but deactivateRow
is undefined
. 在检查项目时,我注意到
activeRow
始终存在,但deactivateRow
是undefined
。
Could you give me an idea of what can cause this problem? 您能告诉我什么会导致此问题吗?
export class Row extends React.Component<Props, State> {
state: State = {
isActive: false,
}
activeRow = () => {
this.setState({ isActive: true })
}
deactivateRow = () => {
this.setState({ isActive: false })
}
render(): JSX.Element {
const { classes, children } = this.props
const { isActive } = this.state
return (
<TableRow className={isActive ? classes.active: classes.noActive}>
{React.cloneElement(this.props.children, {
activeRow: this.activeRow,
deactivateRow: this.deactivateRow,
})}
</TableRow>
)
}
}
React.cloneElement
, just clones a single React element
, for cloning more that one children element, you need to map over all the children and clone them React.cloneElement
,仅克隆一个single React element
,要克隆多个子元素,您需要映射所有子元素并将其克隆
export class Row extends React.Component<Props, State> {
state: State = {
isActive: false,
}
activeRow = () => {
this.setState({ isActive: true })
}
deactivateRow = () => {
this.setState({ isActive: false })
}
render(): JSX.Element {
const { classes, children } = this.props
const { isActive } = this.state
return (
<TableRow className={isActive ? classes.active: classes.noActive}>
{React.Children.map(this.props.children, (child) => {
return React.cloneElement(child, {
activeRow: this.activeRow,
deactivateRow: this.deactivateRow
}
}
)}
</TableRow>
)
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.