Ban*_*cat 3 javascript reactjs
我明白你不能返回多个元素.但是这种限制导致我无法在没有帮助的情况下解决这个问题.
我正在使用另一个HTML设计,它使用1个深度列表来表示3个深度列表.作为最后的手段,我可以改变这一点.
我转换为React的HTML示例.每个GET请求的设备,卡和遥控器的数量都可能不同.
<ul class='deviceList'>
<li>Device A`</li>
<li>Cards Connected in Device A</li>
<li>Card 1</li>
<li>Card 2</li>
<li>Remotes Connected to Device A</li>
<li>Remote 1</li>
<li>Device B</li>
<li>Cards Connected to Device B</li>
<li>Card 1</li>
<!-- ... could go on for more ...-->
</ul>
Run Code Online (Sandbox Code Playgroud)
这就是我设置实际包含的React代码的方法<ul>:
var DeviceList = React.createClass({
render: function() {
var deviceList = this.props.devices.map(function (device) {
return [
<DeviceTitle title='{device.name}' />,
<ComponentTitle title='Cards' />,
<Cards cards={device.cards} />,
<ComponentTitle title='Remotes' />,
<Remotes remotes={device.remotes} />
];
});
return (
<ul className='deviceList'>
{deviceList}
</ul>
);
}
});
Run Code Online (Sandbox Code Playgroud)
所以问题是Card和Remote组件需要返回多个列表组件.我试着让它返回一个列表组件数组但这不起作用.
这就是我所拥有的......这是失败的部分.
var cards = React.createClass({
render: function() {
var cards = this.props.cards.map(function (card) {
return (
<li>{card.name}</li>
);
});
// illegal
return {{cards});
}
});
// Remote is a little different but same problem
Run Code Online (Sandbox Code Playgroud)
另外..为了使这个更简单,我只展示了3个深度列表但实际上它是4个深度.每张卡和遥控器都可以连接其他组件.
所以这里有其他问题.我不能这样做.所以我该怎么做?
问题是这return {{cards}};不是有效的JavaScript.您只在JSX中使用类似花括号.(你也错过了第6行的右括号.) cards只是一个常规的JavaScript变量,所以你的函数应该像任何其他变量一样返回它:
var cards = React.createClass({
render: function() {
var cards = this.props.cards.map(function (card) {
return (
<li>{card.name}</li>
);
});
return <ul>{cards}</ul>;
});
Run Code Online (Sandbox Code Playgroud)
当然,返回一个s <ul>而不是一个<li>s 数组并不是你想要的,但是作为生成合理标记的问题,它是有意义的Cards并且Remotes是子列表而不是将它们全部转储到单个列表中.
| 归档时间: |
|
| 查看次数: |
2818 次 |
| 最近记录: |