开发者问题收集

React-Native:从父组件调用组件内的函数

2020-07-13
147

Child.js:

export default class Child extends Component {

  testFunc = () => {
   console.log("test")
  }

  componentDidMount() {
    this.props.onRef(this)
 }

Parent.js:

export default class Parent extends Component {

 render() { 
   return (
   <>
     <Child onRef = {ref => (this.child=ref)}> </Child>
     <Button onPress={this.child.testFunc()}></Button>
   </>
   )
 }
}

我想知道如何在 React Native 中从父组件调用子组件中的函数?我尝试了上面的代码,但收到错误“TypeError undefined 不是对象(评估‘_this.child.testFunc’)。

当我尝试此处建议的解决方案时,我收到相同的错误: 在 React Native 中从父组件调用子函数

有人可以帮帮我吗?

2个回答

在我看来,这是一个糟糕的设计。如果您希望 testFunc() 在父组件中可用,那么您应该在父组件中定义该函数。

为了在子组件中使用此函数,您可以在 props 中将此函数传递给子组件。

从 ParentComponent.js,您可以像这样传递此函数

<ChildComponent func = {testFunc} />

在 ChildComponent.js 中,您可以像这样回调此函数 this.props.func()

Ezio
2020-07-13

请尝试此操作。由于 javascript 语法,调用 testFunc 时删除括号。

export default class Parent extends Component {

  render() { 
   return (
   <>
     <Child onRef = {ref => (this.child=ref)}> </Child>
     <Button onPress={this.child.testFunc}></Button>
   </>
   )
  }
 }
İlker
2020-07-13