Reactjs 从另一个react组件调用react组件内的方法

Reactjs 从另一个react组件调用react组件内的方法,reactjs,Reactjs,我是ReactJS的新手,遇到了一个问题,我有两个组件,我将它们称为comp1和comp2。Comp1呈现comp2,comp2中有一个方法 如果在comp1中单击按钮,它将调用comp1中的单击处理程序,我希望它调用comp2中的方法,但我不断收到错误this.comp1.myFunc不是一个函数 下面是代码 在comp1中 class Comp1 extends React.Component { testClick() { this.comp2Comp.my

我是ReactJS的新手,遇到了一个问题,我有两个组件,我将它们称为comp1和comp2。Comp1呈现comp2,comp2中有一个方法

如果在comp1中单击按钮,它将调用comp1中的单击处理程序,我希望它调用comp2中的方法,但我不断收到错误
this.comp1.myFunc不是一个函数

下面是代码

在comp1中

class Comp1 extends React.Component
{
    testClick()
    {
        this.comp2Comp.myFunc();
    }

render() {
        const postCommentDisabledState = this.state.newComment.length === 0;

        this.comp2Comp = <Comp2 />

        return (
            <div>
                <button onClick={this.testClick}>Test</button>
                {this.comp2Comp}
            </div>
        )
    }
}
class Comp1扩展了React.Component
{
testClick()
{
this.comp2Comp.myFunc();
}
render(){
const postCommentDisabledState=this.state.newComment.length==0;
此.comp2Comp=
返回(
试验
{this.comp2Comp}
)
}
}
在comp2中

class Comp2 extends React.Component
{
    myFunc()
    {
        alert("Testing MyFunc");
    }

    render()
    {
         return (
            <div>comp2</div>
         )
    }
}
类Comp2扩展了React.Component
{
myFunc()
{
警报(“测试MyFunc”);
}
render()
{
返回(
comp2
)
}
}
我想做的事情可能吗?如果不可能的话,我将如何做我想实现的事情


最终的结果是,comp2在其状态中有一些东西,当按下comp1中的按钮时,我可以从comp2中获取我需要的数据,供comp1使用

由于Comp2是一个子组件,您应该将其状态和
myFunc
移动到Comp1。通常,在React中,您希望使用单向数据绑定,因此所有状态都应该“提升”到父上下文。见:


另外,需要注意的是,渲染函数不应该有任何副作用,比如在组件上设置属性。请参阅:

因为Comp2是一个子组件,所以应该将其状态和
myFunc
移动到Comp1。通常,在React中,您希望使用单向数据绑定,因此所有状态都应该“提升”到父上下文。见:


另外,需要注意的是,渲染函数不应该有任何副作用,比如在组件上设置属性。请参阅:

我认为这可能是答案,我正在尝试这样做,以便comp2可以重复使用,func始终可用-也许我需要重新考虑我的组件。谢谢你的帮助,我认为这可能是答案,我正在努力使它可以重复使用comp2和func将始终可用-也许我需要重新考虑我的组件。谢谢你的帮助