Javascript 在react中呈现多个不同类型的子级
在react中,您可以执行以下操作:Javascript 在react中呈现多个不同类型的子级,javascript,reactjs,Javascript,Reactjs,在react中,您可以执行以下操作: var Wrap = React.createClass({ render: function() { return <div>{ this.props.children }</div>; } }); var App = React.createClass({ render: function() { return <Wrap><h1>Hello wor
var Wrap = React.createClass({
render: function() {
return <div>{ this.props.children }</div>;
}
});
var App = React.createClass({
render: function() {
return <Wrap><h1>Hello word</h1></Wrap>;
}
});
var Wrap=React.createClass({
render:function(){
返回{this.props.children};
}
});
var App=React.createClass({
render:function(){
回复问候语;
}
});
这允许您将一个组件传递给另一个组件。但如果Wrap有另一个div,您可以将内容放入其中呢。因此,考虑以下内容:
var Wrap = React.createClass({
render: function() {
return (
<div>
<ul className="icons">
// Another compoent should be passed here from App to render icons.
</ul>
{ this.props.children }
</div>
);
}
});
var App = React.createClass({
render: function() {
return <Wrap><h1>Hello word</h1></Wrap>;
}
});
var Wrap=React.createClass({
render:function(){
返回(
//另一个组件应该从应用程序传递到渲染图标。
{this.props.children}
);
}
});
var App=React.createClass({
render:function(){
回复问候语;
}
});
在上面的示例中,您可以看到,我不仅希望传入App
组件的子组件,而且还希望传入另一个组件,即ul
部分的图标。这可能吗
如果是,怎么做?我看到两种选择:
<Wrap icons={<Icons />}><h1>...</h1></Wrap>
使用高阶组件来实现这一点比通过索引或循环访问子级更干净
const wrap = (Icons) => class extends React.Component {
render() {
return (
<div>
<ul className="icons">
<Icons {...this.props.iconProps} />
</ul>
{ this.props.children }
</div>
);
}
});
class AppIcons extends React.Component {
render: function() {
return <div />
}
});
class App extends React.Component {
render: function() {
return <Wrap iconProps={this.props}><h1>Hello word</h1></Wrap>;
}
});
const Wrap = wrap(AppIcons);
ReactDOM.render(App, domContainerNode)
const wrap=(Icons)=>类扩展React.Component{
render(){
返回(
{this.props.children}
);
}
});
类AppIcons扩展了React.Component{
render:function(){
返回
}
});
类应用程序扩展了React.Component{
render:function(){
回复问候语;
}
});
常量换行=换行(应用图标);
render(应用程序,域容器节点)
如何将组件作为属性传递?如果我做了var Icons=React.createClass({})
是否会像您那样
如果我处理两个孩子,如何设置第二个孩子?第一个是
的this.props.children
,但第二个是?您可以像其他任何组件一样创建组件,例如
this.props.children
实际上是单个组件或组件数组。有一个helper函数总是返回一个数组,但我现在记不起来了。如果您传递了两个子项,则可以使用this.props.children[0]
访问第一个子项,使用this.props.children[1]
访问第二个子项。这两个组件不是不同吗
,返回
,以及{this.props.children}
中的任何内容。然后在App
中,您可以实例化两个不同的组件,而不是一个。我认为,如果你将组件作为道具传递,你会继续感觉自己在战斗。
const wrap = (Icons) => class extends React.Component {
render() {
return (
<div>
<ul className="icons">
<Icons {...this.props.iconProps} />
</ul>
{ this.props.children }
</div>
);
}
});
class AppIcons extends React.Component {
render: function() {
return <div />
}
});
class App extends React.Component {
render: function() {
return <Wrap iconProps={this.props}><h1>Hello word</h1></Wrap>;
}
});
const Wrap = wrap(AppIcons);
ReactDOM.render(App, domContainerNode)