我正在用回复写一个 HOC。当我要返回类与错误汉德勒
HOC 我得到一个警告在控制台说
函数作为React子级无效。如果您返回一个组件而不是< code >,可能会发生这种情况
我将为模式添加click处理程序,使其能够关闭。另外,我将从错误中得到消息,我已经将其作为第二个函数的参数传递给了模态中的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 是一个接受组件并返回新组件的函数
您的代码:
const WithErrorHandler
= WrappedComponent // takes a component
=> ({ error, children }) // takes some params
=> class ... // returns a new component
你真正想要的:
const WithErrorHandler
= WrappedComponent // takes a component
=> class ... // returns a new component
// inside the class use this.props.error, this.props.children, etc.
另一种方式(使用功能组件):
const WithErrorHandler
= WrappedComponent // takes a component
=> ({ error, children }) => <WrappedComponent>...</WrappedComponent> // returns a new component
您的HOC正在接受实际组件
相反,您的 HOC 应该接受实际的组件
这应该可以解决您的问题。
const WithErrorHandler = WrappedComponent => ({ error, children }) => {
return(
<WrappedComponent>
{error && <Modal type={error.messageType} message={error.message} />}
{children}
</WrappedComponent>
);
};
我已经更新了我的路由器,以接受第二条主要路线。 当我在我的应用程序中导航到“/manager”时,我得到一个错误: 警告:函数作为React子级无效。如果您返回一个组件而不是从render返回,可能会发生这种情况。或者你想调用这个函数而不是返回它。在未知(由RouterContext创建)在路由器的RouterContext(由路由器创建)中 // AdminContainer.js //User
我是React新手,在Hooks的帮助下,我正在React中开发简单的CRUD应用程序。< br >该应用程序有两个表单组件< code>AddUserForm和< code>EditUserForm,它们相应地添加和编辑用户列表。还有一个显示用户列表的组件(但是我没有得到警告)。< br >一切正常,但是我的浏览器控制台中出现以下警告消息:< br>
我已经创建了一个高阶组件,它应该为我的组件添加一些额外的功能。然而,当我在这个组件中使用反应钩子时,我会得到以下eslint警告。 不能在回调内调用React钩子“React.useffect”。必须在React函数组件或自定义React钩子函数中调用React钩子。(吊钩/吊钩规则) 为什么我会收到这个警告?在HoC中使用钩子被认为是不好的做法吗? 最简单的例子: Codesandbox:htt
我有以下代码: 但我得到了以下错误: 未捕获的不变违规:对象作为React子对象无效(找到:带有键{正文、附件、视频、主题、updated_at、id、主题、反对票、作者、posted_at、注释、user_vote、好评、状态、标签、位置、track_impact、user_is_following、comments_count}的对象)。如果要呈现子集,请使用数组来代替,或者使用React加载
reactapollo中的graph qlhoc帮助将组件与查询连接起来。因此查询将执行,结果将作为组件中的道具可用。 是否有一种方法可以不直接执行查询,而是将函数作为prop传递给可以作为组件内的正常函数调用执行的函数。因为我有一个查询,需要在用户选择组件中的一些选项后执行。 如 这可以通过直接使用apollo客户端来实现。但是否有任何方法可以在graphql hoc的帮助下使用它呢。因此,组件
我用这篇文章作为例子(React way),但它对我不起作用。请指出我的错误,因为我不明白出了什么问题。 这就是我看到的错误: 错误:this.props.on点击不是一个函数 这是我的密码: 提前谢谢!