我写了一个高阶组件:
import React from 'react';
const NewHOC = (PassedComponent) => {
return class extends React.Component {
render(){
return (
<div>
<PassedComponent {...this.props}/>
</div>
)
}
}
}
export default NewHOC;
我在我的App.js中使用以上内容:
import React from 'react';
import Movie from './movie/Movie';
import MyHOC from './hoc/MyHOC';
import NewHOC from './hoc/NewHOC';
export default class App extends React.Component {
render() {
return (
<div>
Hello From React!!
<NewHOC>
<Movie name="Blade Runner"></Movie>
</NewHOC>
</div>
);
}
}
但是,我得到的警告是:
警告:函数作为React子代无效。如果您从渲染返回一个Component而不是
,则可能会发生这种情况。或者,也许您打算调用此函数而不是返回它。在应用程序的div(由应用程序创建)中的NewHOC(由应用程序创建)中
Movie.js文件为:
import React from "react";
export default class Movie extends React.Component{
render() {
return <div>
Hello from Movie {this.props.name}
{this.props.children}</div>
}
}
我究竟做错了什么?
您将其用作常规组件,但实际上它是一个返回组件的函数。
尝试做这样的事情:
const NewComponent = NewHOC(Movie)
您将像这样使用它:
<NewComponent someProp="someValue" />
这是一个正在运行的html" target="_blank">示例:
const NewHOC = (PassedComponent) => {
return class extends React.Component {
render() {
return (
<div>
<PassedComponent {...this.props} />
</div>
)
}
}
}
const Movie = ({name}) => <div>{name}</div>
const NewComponent = NewHOC(Movie);
function App() {
return (
<div>
<NewComponent name="Kill Bill" />
</div>
);
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"/>
因此,基本上NewHOC
只是一个接受组件并返回一个新组件的函数,该组件将呈现传入的组件。我们通常使用此模式来增强组件并共享逻辑或数据。
您可以在文档中阅读有关HOCS的信息,我也建议您阅读有关react元素和组件之间差异的信息
我写了一篇关于在React中共享逻辑的不同方式和模式的文章
我有视图组件,它必须导入多个组件。这些组件将根据某些特定条件进行渲染。它应该如何工作是,我在页面上有3个按钮,例如,在我点击第一个按钮(文件上传)后,我需要渲染<代码> 警告:函数作为React子函数无效。如果您返回组件而不是从渲染中返回,可能会发生这种情况。或者您可能打算调用此函数而不是返回它。 这到底有什么问题?
假设我有一个需要函数的组件,它应该返回一些基于我在< code>filterTypesArray中接收的生成的“DOM”结构。然后我想在我的类的返回函数中使用< code>{generateInputs}来呈现它。它给了我一个警告。为了避免这种情况,我必须在< code>render函数中将这种类型的逻辑实现为某个< code>const。我是新反应,我不知道为什么会这样。我没有从那条警告信息中看
以下是主要游戏.js和应用程序.js文件: 在game.js文件中,我在H1中使用了numPicker函数。现在我得到了这个错误: 警告:函数作为React子函数无效。如果您返回组件而不是从渲染中返回,可能会发生这种情况。或者您可能打算调用此函数而不是返回它。
我正在尝试使用此自定义钩子,从路由中为我带来本地消息。 因此,当我尝试从应用程序中的这个钩子调用“handleMessage”函数时。js组件,出现以下警告:警告:函数作为React子函数无效。如果返回组件而不是从渲染返回组件,则可能会发生这种情况。或者你想调用这个函数而不是返回它。 有我的App.js: 我能做些什么来解决这个问题?
[更新]在有人将其标记为重复之前,我发现答案有点模糊和简短 函数作为React子函数无效。如果返回组件而不是从渲染返回组件,则可能会发生这种情况 我有一个这样的反应组件 这是我的模态成分可能会导致问题 我在控制台中看到以下错误 函数作为React子函数无效。如果返回组件而不是从渲染返回组件,则可能会发生这种情况 [问题]有人能解释一下是什么导致了这个错误,因为有人投票并写了一条评论说负责的代码不在
我是新手,我正在使用非官方的哈利波特api构建一个应用程序。 这是应用程序: 当我登录控制台时,来自API的JSON响应成功显示,但是我在渲染输出时遇到了问题。我正在使用Bulma进行前端样式。 这在我的app.js中 这是错误消息: 后端。js:6警告:函数作为React子函数无效。如果返回组件而不是从渲染返回组件,则可能会发生这种情况。或者你想调用这个函数而不是返回它。在p中(由HouseHi