新的角度反应 收到错误:
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
}
答案 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
的信息