下面显示的代码将导致错误“输入是空元素标记,并且既不能具有children
也不能使用dangerouslySetInnerHTML
”。使用Comp1时,componentDidUpdate可以正确捕获它,但是当我将其更改为Comp2时,应用程序就会崩溃。为什么会这样?
const Comp1 = () => <input>ABC</input>
const Comp2 = () => <input><div /></input>
class ErrorBoundary extends React.Component {
state = { error: '' };
componentDidCatch(error) {
this.setState({ error: error.toString() });
}
render() {
return this.state.error ? <div>ERROR: {this.state.error}</div> : <Comp1 />
}
}
似乎在16.4.2中,这两种情况都适用。