【发布时间】:2019-06-15 00:58:19
【问题描述】:
我正在用 Reactjs 编写 HOC。当我要在WithErrorHandler HOC 中返回课堂时,我在控制台中收到警告说
“函数作为 React 子级无效。如果你 从渲染返回一个组件而不是
<Component />。或者也许你 意味着调用这个函数而不是返回它。”但是,如果我 删除类,警告将消失。
我将为 Modal 添加点击处理程序以使其能够关闭。此外,我将从错误中获取消息,该消息已作为第二个函数的参数传递,以便在 Modal 中显示。
import React, { Component } from 'react';
import Modal from '../Modal'
const WithErrorHandler = WrappedComponent => ({ error, children }) => {
return(
class extends Component {
state = {modalShow: false}
modalToggle = ()=> {
this.setState(ModalShow: !!error.message)}
render() {
return (
<WrappedComponent>
{error && <Modal type={error.messageType} message={error.message} />}
{children}
</WrappedComponent>
);
}
}
)
};
const DivWithErrorHandling = WithErrorHandler(({children}) => {
return children
})
class App extends Component {
state ={error: null}
someMethode = ()=> {
const sampleError = {//an object with message key}
this.setState(error: sampleError)
}
Render(){
return (
<DivWithErrorHandling error={this.state.error} >
<h1>Component</h1>
<button onClick={this.someMethode}>
Toggle Error
</button>
</DivWithErrorHandling>
)
}
}
【问题讨论】:
-
您能否再添加一个示例来说明如何应用此 HOC?
-
您好,您可以尝试以下方法吗? ``` const WithErrorHandler = WrappedComponent => ({ error, children }) => { return props =>( return (
```
标签: javascript reactjs higher-order-components