我一直在可重复使用的TransitionComponent
class TransitionComponent extends React.Component {
render() {
return(
<div>
{
React.Children.map(children, (slide) => {
return (
<CSSTransition
key={slide.props.hash}
unmountOnExit
>
<div tabIndex="-1" >
{slide}
</div>
</CSSTransition>
);
})
}
</div>
)
}
}
TransitionComponent
的用法如下:
<TransitionComponent>
<Child1 />
<Child2 />
<Child3 />
</TransitionComponent>
到目前为止,它一直有效,但是现在我需要将一个函数从TransitionComponent
传递给它的孩子。
我已经尝试过:
class TransitionComponent extends React.Component {
someFunction = () => {
console.log('someFunction was called')
}
render() {
return(
<div>
{
React.Children.map(children, (slide) => {
return (
<CSSTransition
key={slide.props.hash}
unmountOnExit
>
<div tabIndex="-1" >
{ () => slide({ someFunction: this.someFunction }) }
</div>
</CSSTransition>
);
})
}
</div>
)
}
}
但是我得到这个错误:
警告:函数作为React子元素无效。如果发生这种情况 您返回一个Component而不是从render返回。或许 您打算调用此函数而不是返回它。
答案 0 :(得分:0)
我与React.cloneElement
一起使用
<div
tabIndex="-1"
>
{React.cloneElement(slide, {
someFunction: this. someFunction,
})}
</div>