当前位置: 首页 > 知识库问答 >
问题:

另一个...函数作为React子级无效

邬良才
2023-03-14

好的,所以我加载根网址。应该呈现一个帖子列表,相反,我得到了臭名昭着的React错误......

Warning: 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.

index.js和app.js似乎可以正确呈现。我相信故障出在PostList组件,也许是render方法?我知道解决方法可能很简单,但我看不出来。

index.js

  7
  8 ReactDOM.render(
  9     <React.StrictMode>
 10         <HashRouter>
 11             <App />
 12         </HashRouter>
 13     </React.StrictMode>,
 14     document.getElementById('root')
 15 );
 16
 17 
 18 
 19 
 20 reportWebVitals();

应用.js

  8
  9 class App extends React.Component {
 10
 11     constructor() {
 12         super();
 13         this.state = {
 14             posts: []
 15         };
 16     }
 17
 18     componentDidMount() {}
 19
 20     render() {
 21         return (
 22             <div className="container">
 23                 <h1>hello world</h1>
 24                 <Routes>
 25                     <Route exact path='/' element={PostList} />
 26                     <Route path='/post/:id' element={Post} />
 27                 </Routes>
 28             </div>
 29         );
 30     }
 31 }
 32
 33 export default App;

post-list.js

  5
  6 class Post extends React.Component {
  7     constructor() {
  8         super();
  9         this.state = {
 10             title: '',
 11             content: ''
 12         };
 13     }
 14
 15     componentDidMount() {
 16         let api = new Api();
 17
 18         api.posts(this.props.match.params.id).then(data => {
 19             this.setState({
 20                 title: data.title.rendered,
 21                 content: data.content.rendered
 22             });
 23         });
 24     }
 25
 26     render() {
 27         let post = this.state;
 28         return (
 29             <div className='row'>
 30                 <h3>{post.title}</h3>
 31                 <div dangerouslySetInnerHTML={{__html: post.content}} />
 32             </div>
 33         );
 34     }
 35 }
 36
 37 class PostList extends React.Component {
 38     constructor() {
 39         super();
 40         this.state = {
 41             posts: []
 42         };
 43     }
 44
 45     componentDidMount() {
 46         let api = new Api();
 47
 48         api.posts().then(data => {
 49             this.setState({
 50                 posts: data
 51             });
 52         });
 53     }
 54
 55     render() {
 56         let posts = this.state.posts.map((post, index) =>
 57             <h3 key={index}>
 58                 <Link to={`/post/${post.id}`}>{post.title.rendered}</Link>
 59             </h3>
 60         );
 61
 62         return (
 63             <div>{posts}</div>
 64         );
 65     }
 66 }
 67
 68 export {Post, PostList}

共有1个答案

穆飞龙
2023-03-14

显然,您在配置路由时遇到了问题

您可以在 React 路由器的文档中查看配置路由的部分 https://reactrouter.com/docs/en/v6/getting-started/overview

尝试将app.js文件中第25行和第26行的PostList和Post替换如下

<Route exact path='/' element={<PostList/>} />
<Route path='/post/:id' element={<Post/>} />
 类似资料:
  • 我已经更新了我的路由器,以接受第二条主要路线。 当我在我的应用程序中导航到“/manager”时,我得到一个错误: 警告:函数作为React子级无效。如果您返回一个组件而不是从render返回,可能会发生这种情况。或者你想调用这个函数而不是返回它。在未知(由RouterContext创建)在路由器的RouterContext(由路由器创建)中 // AdminContainer.js //User

  • 问题内容: 是否可以通过C语言函数API或通过使用其中将回调函数作为参数的参数在Postgres中创建用户定义的函数? 据我所知,没有办法通过C语言API来执行此操作,因为它仅接受sql数据类型,而没有的数据类型。但是也许我想念什么? 问题答案: 我认为您不能,但是由于没有匿名函数,因此应该传递函数名。

  • 在组件的呈现函数中,我有: 所有内容都显示良好,但单击 元素时,我会收到以下错误: 未捕获得错误:不变冲突:对象作为React子级无效(找到:具有键得对象{dispatchConfig,dispatchMarker,nativeEvent,target,currentTarget,type,eventPhase,bubbles,cancelable,timeStamp,defaultPrevent

  • 在我的快速路由中,我正在尝试传递一个要在渲染函数中使用的组件,该组件处理 SSR。 快速路线: 渲染助手: 错误: “警告:函数作为React子函数无效。如果您返回组件而不是从渲染中返回,可能会发生这种情况。或者您可能打算调用此函数而不是返回它。” 我已经看过的东西包括下面的这个答案,但是我不确定如何将这样一个函数封装在提供者组件中(我是这么认为的)? 函数作为React子函数无效。如果返回组件而

  • 我是React新手,在Hooks的帮助下,我正在React中开发简单的CRUD应用程序。< br >该应用程序有两个表单组件< code>AddUserForm和< code>EditUserForm,它们相应地添加和编辑用户列表。还有一个显示用户列表的组件(但是我没有得到警告)。< br >一切正常,但是我的浏览器控制台中出现以下警告消息:< br>