Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将接收道具的组件视为未定义_Javascript_Reactjs - Fatal编程技术网

Javascript 将接收道具的组件视为未定义

Javascript 将接收道具的组件视为未定义,javascript,reactjs,Javascript,Reactjs,我为一所学校的记录系统构建了一个项目,在这个项目中,我使用React构建了前端。在管理页面的主要组件上,我想有一个react路由器,它将在管理对话框中导航。在我尝试实现此功能时,出现了以下问题:当尝试通过react route组件向类传递参数时,子组件没有收到任何道具 我有以下组件层次结构: class Test extends React.Component { constructor() { super(); console.log("in class:

我为一所学校的记录系统构建了一个项目,在这个项目中,我使用React构建了前端。在管理页面的主要组件上,我想有一个react路由器,它将在管理对话框中导航。在我尝试实现此功能时,出现了以下问题:当尝试通过react route组件向类传递参数时,子组件没有收到任何道具

我有以下组件层次结构:

class Test extends React.Component {
   constructor() {
       super();

       console.log("in class: " + this.props)
   }

   render() { return <div>test</div>}
}

class AdminPage extends BasicPage {
    /* Other class functions here... */
    render() {
       let pageBody = "";
       if(!this.state.isLoading)
           pageBody = (
               <Router>
                   <Switch>
                       <Route path={"/:schoolName/admin"} component={AdminMenu} exact/>
                       <Route path={"/:schoolName/admin/view/:id"} exact
                          component={() => <Test par1="abc" />} />
                   </Switch>
               </Router>
           );
       return (
           <Layout title={ this.state.isLoading ?
               TITLE_UNTIL_LOADED :
               PAGE_TITLE + this.state.schoolPrefs.heb_name}
                   subtitle={ this.state.subtitle }
                   notification={ this.state.notification }
                   isLoading={ this.state.isLoading }
           >
               {pageBody}
           </Layout>
       );
    }
}
然后更改路由组件,如下所示:

<Route path={"/:schoolName/admin/view/:id"} exact
  component={otherTest} />

当我转到
/Random Name/admin/view/someID
时,我看到函数收到了道具,但是
中的日志仍然打印
未定义

我还尝试在主呈现函数中的
{pageBody}
变量之后添加
,但它也在class:undefined
中打印了

有人知道问题出在哪里吗


谢谢。

您必须从构造函数获取props参数,然后将其传递给super

constructor(props){
super(props);
}

不要在构造函数中使用this.props,因为构造函数只在创建类的时候触发。 使用此代码:

constructor(props) {
 super(props);

 console.log(props);
}
constructor(props) {
 super(props);

 console.log(props);
}