我看到很多帖子都与此相关,但我无法理解为什么{this.props.children}
在我的应用程序中未定义(我对ReactJS来说真的很新)
从作为我主要组成部分的App.js
开始,我有这个:
import React, {Component} from 'react';
import Dashboard from './layouts/Dashboard';
class App extends Component {
render() {
return(
<div id="container">
<Dashboard />
</div>
);
}
}
因此,Dashboard.js
必须编码以呈现顶部栏和左侧栏,&#34;动态&#34;内容将放在中心(这是我放置{this.props.children}
)
Dashboard.js
render() {
return(
<div className="content" id="wrapper">
<!-- Navbar and sidebar code -->
<-- this is the dynamic content -->
<div id="page-wrapper" className="page-wrapper" ref="pageWrapper">
{this.props.children}
</div>
</div>
);
}
现在路由器非常简单:
<Route component={App}>
<Route path='/' component={Home} />
</Route>
我省略了与Home.js相关的代码,但这是一个简单的div
,以statyc方式打印"Hello World"
仪表板组件已渲染,但没有&#34; Hello World&#34;放在我有{this.props.children}
的部分答案 0 :(得分:6)
您无法通过this.props.children访问组件的子组件。 this.props.children指定所有者传递给您的孩子:
var App = React.createClass({
componentDidMount: function() {
// This doesn't refer to the `span`s! It refers to the children between
// last line's `<App></App>`, which are undefined.
console.log(this.props.children);
},
render: function() {
return <div><span/><span/></div>;
}
});
ReactDOM.render(<App></App>, mountNode);
要访问您自己的子组件(跨度),请在其上放置引用https://facebook.github.io/react/docs/more-about-refs.html
答案 1 :(得分:4)
您必须将孩子传递给仪表板:
class App extends Component {
render() {
return(
<div id="container">
<Dashboard>{this.props.children}</Dashboard>
</div>
);
}
}
答案 2 :(得分:1)
Dashboard
没有孩子。
将App.js中的<Dashboard />
更改为<Dashboard>{this.props.children}</Dashboard>
,以便您的信息中心组件可以访问您pass through the Route
的组件。
答案 3 :(得分:0)
您可以检查Dashboard.js中是否存在子项
render() {
return <div>{this.props.children !== undefined && this.props.children}</div>
}