React Native 将父方法传递给子组件

Posted

技术标签:

【中文标题】React Native 将父方法传递给子组件【英文标题】:React Native Pass Parent Method to Child Component 【发布时间】:2019-07-13 21:02:26 【问题描述】:

我正在尝试将方法从我的父组件传递给子组件。我认为我的代码是正确的,但它仍然显示错误 undefined is not an object(evalating '_this2.props.updateData') 。我不知道是什么问题,因为我在互联网上搜索了很多,每个人都像这样向孩子传递道具。请告诉我我错过了什么

家长:

class Parent extends React.Component 
  updateData = (data) => 
    console.log(`This data isn't parent data. It's $data.`)
    // data should be 'child data' when the
    // Test button in the child component is clicked
  
  render() 
    return (
      <Child updateData=val => this.updateData(val) />
    );
  

孩子:

class Child extends React.Component 
  const passedData = 'child data'
  handleClick = () => 
    this.props.updateData(passedData);
  
  render() 
    return (
      <button onClick=this.handleClick()>Test</button>
    );
  

【问题讨论】:

【参考方案1】:
class Parent extends React.Component  
updateData = (data) => 
  console.log(`This data isn't parent data. It's $data.`)

render() 
  return (
    <Child updateData=this.updateData />
  );


和子组件:`

class Child extends React.Component 
  const passedData = 'child data'
  handleClick = () => 
    this.props.updateData(passedData);
  
  render() 
    return (
      <button onClick=this.handleClick>Test</button>
    );
  

`

【讨论】:

我也尝试用这样的导航代码替换 this.navigation.navigate('Screen1', ) 但仍然是同样的错误。我现在不知道该怎么办...... 其实我也有类似的问题,比如***.com/questions/34860822/react-native-loop-this【参考方案2】:

你需要直接传递函数,而不是作为回调

class Parent extends React.Component 
  updateData = (data) => 
    console.log(`This data isn't parent data. It's $data.`)
    // data should be 'child data' when the
    // Test button in the child component is clicked
  
  render() 
    return (
      <Child updateData=this.updateData />
    );
  

【讨论】:

【参考方案3】:
`class Child extends React.Component     
    handleClick = () => 
        const passedData = 'child data'
        this.props.updateData(passedData);
    
    render() 
        return (
            <button onClick=this.handleClick>Test</button>
        );
    
`

【讨论】:

【参考方案4】:

我认为您需要传递这样的函数。 Check out this solution。

【讨论】:

请提供您提到的来源的更多详细信息,因为将来链接可能会停止工作以被删除!

以上是关于React Native 将父方法传递给子组件的主要内容,如果未能解决你的问题,请参考以下文章

将子组件连接到 store 与将父组件连接到 store 并传递 props

在 React 中将状态变量和方法传递给子组件的更简洁的方法?

react父组件传入的属性没有让子组件收到的prop变化

React 父子组件通信

React 和 Redux:将父组件作为道具传递给其子组件是不是存在任何性能问题/可能的副作用

React:将状态传递给子组件