作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在用 Reactjs 编写 HOC。当我要在 WithErrorHandler
返回类时HOC 我在控制台中收到一条警告说
"Functions are not valid as a React child. This may happen if you return a Component instead of
<Component />
from render. Or maybe you meant to call this function rather than return it." However, if I remove class, warning will be gone.
我将为 Modal 添加点击处理程序以使其能够关闭。此外,我将从错误中获取消息,我已将其作为第二个函数的参数传递给 Modal 中的 show。
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 正在接受实际组件并返回一个子函数(包装器组件),该函数再次返回一个类组件。
取而代之的是,您的 HOC 应该接受实际组件并返回一个新的包装组件。
这应该可以解决您的问题。
const WithErrorHandler = WrappedComponent => ({ error, children }) => {
return(
<WrappedComponent>
{error && <Modal type={error.messageType} message={error.message} />}
{children}
</WrappedComponent>
);
};
关于javascript - 警告 : Functions are not valid as a React child HOC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54293312/
我是一名优秀的程序员,十分优秀!