Javascript ReactJS在两层typescript上调用父方法
我在两层调用父方法时遇到了一个问题。 它要么什么也不做,要么说它不是一个函数。下面是我的子组件:Javascript ReactJS在两层typescript上调用父方法,javascript,reactjs,typescript,methods,callback,Javascript,Reactjs,Typescript,Methods,Callback,我在两层调用父方法时遇到了一个问题。 它要么什么也不做,要么说它不是一个函数。下面是我的子组件: class Child extends React.Component { render() { //return some awesome HTML, that at some point calls doStuff } doStuff() { //do some stuff this.props.parentState.notifyParent(); } } 我的父组件现在正在进行一些条
class Child extends React.Component {
render() { //return some awesome HTML, that at some point calls doStuff }
doStuff() {
//do some stuff
this.props.parentState.notifyParent();
}
}
我的父组件现在正在进行一些条件操作,因此它看起来如下所示:
class Parent extends React.Component {
constructor(props : any) {
super(props);
this.state = {
//setSomeProps
updateParent: this.updateParent
};
}
determineUsedComponent(props: any) {
//some conditions
return <Child parentState={props}/>
}
updateParent() {
console.log("Update parent");
}
render() {
return (<this.determineUsedComponent props={this.state}/>)
}
}
return <Child parentUpdate={()=>this.parentUpdate}/>
而父组件则具有具有以下签名的DetermineUserComponent方法:
determineUsedComponent(props: Any, updateParent: Function) {}
它被称为:
<this.determineUsedComponent props={this.state} updateParent={this.updateParent}/>
然后,如果我尝试在DetermineUserComponent方法内部将其作为属性插入:
return <Child parentUpdate={this.parentUpdate}/>
返回
它再次抛出异常“this.props.notifyParent()不是函数”。
相反,如果我这样写:
class Parent extends React.Component {
constructor(props : any) {
super(props);
this.state = {
//setSomeProps
updateParent: this.updateParent
};
}
determineUsedComponent(props: any) {
//some conditions
return <Child parentState={props}/>
}
updateParent() {
console.log("Update parent");
}
render() {
return (<this.determineUsedComponent props={this.state}/>)
}
}
return <Child parentUpdate={()=>this.parentUpdate}/>
返回此.parentUpdate}/>
没有错误,只是什么也没发生。(也没有日志。)
我非常无知,现在尝试了所有可能的方法来编写函数并将其交给child,但有些人给出了错误(两个以上),大多数人根本没有做任何事情。
有什么想法吗?
也许值得一提:子组件是用纯JS编写的,而父组件是用Typescript编写的。您试过了吗
return <Child parentUpdate={()=>this.parentUpdate()}/>
返回此.parentUpdate()}/>
我没有用两层实现它。
然而,我找到了另一个解决方案:
您可以将条件呈现从“determineComponent”-方法直接移动到render()-方法中,然后直接输入父函数(语法如DarioRega上面所写)。那就行了。我不会说谎,这是一个扭曲的模式!虽然我不知道原因,所以我不能真正判断,虽然可能的原因是我需要条件检查,应该根据父组件中的一些引用状态使用哪个组件。但愿我也能把这种方法放在这两者之间。这给了我一个想法,降低可读性,但删除一层。。。不过,如果有理由让它使用两层的话,它还是很好的D