将ag-grid数据从孩子传递给父母

时间:2018-06-27 17:15:26

标签: reactjs ag-grid ag-grid-react

新的角度反应 收到错误:

The above error occurred in the <div> component: in div
Consider adding an error boundary to your tree to customize error handling behavior.

我不太明白为什么div以及错误在说什么? 我试图单击一行并将值从行传递到父级。 在顶层父级组件中,我有一个函数可以设置所选行的值,在子级中,所选行将传递给props。

父母:

class Parent extends React.Component {
  constructor(props) {
    super(props)

    this.state = {
      activeItem: []
    }

    this.setActiveItem = this.setActiveItem.bind(this)
  }

  setActiveItem = userSelect => {
    this.setState({ activeItem: userSelect })
  }

render(){
     <Child activeItem={this.setActiveItem}/>
}

在我的孩子中,我使用onRowClicked使用ag-grid。错误正在this.props.setActiveItem(event.data)

中引发
class Child extends React.Component {
    constructor(props) {
        super(props)
     }
    onRowClicked = event => {
        //eslint-disable-next-line no-console
        console.log('tester', event.data) //okay, shows data
        this.props.setActiveItem(event.data) //not okay, throws error
      }

    grid = () => {
        return (
          <AgGridReact
            columnDefs={this.state.columnDefs}
            rowData={this.state.data}
            onRowClicked={this.onRowClicked}
          />
        )
      }
    render() {
        if (this.state.data.length > 0) {
          return <div className="ag-mod">{this.grid()}</div>
        }
        return <br />
      }
}
    //also here's the prop for child
    Child.propTypes = {
      setActiveItem: PropTypes.func
    }

1 个答案:

答案 0 :(得分:0)

您要将setActiveItem从父级传递给子级作为activeItem。

<Child activeItem={this.setActiveItem}/>

因此,在子级中,请使用您在传递时所输入的名称来调用它。

onRowClicked = event => {
    //eslint-disable-next-line no-console
    console.log('tester', event.data) //okay, shows data
    this.props.activeItem(event.data) //not okay, throws error
  }

此外,请考虑将您的组件包装在错误边界中作为上述错误。它有助于。您可以了解有关here

的信息