我正在尝试在React JSX中执行以下操作(其中ObjectRow是一个单独的组件):
<tbody>
for (var i=0; i < numrows; i++) {
<ObjectRow/>
}
</tbody>
Run Code Online (Sandbox Code Playgroud)
我意识到并理解为什么这不是有效的JSX,因为JSX映射到函数调用.然而,来自模板领域并且是JSX的新手,我不确定如何实现上述(多次添加组件).
我正在构建一个React组件,它接受JSON数据源并创建一个可排序的表.
每个动态数据行都有一个分配给它的唯一键,但我仍然收到以下错误:
数组中的每个子节点都应该具有唯一的"键"支柱.
检查TableComponent的render方法.
我的TableComponentrender方法返回:
<table>
<thead key="thead">
<TableHeader columns={columnNames}/>
</thead>
<tbody key="tbody">
{ rows }
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
该TableHeader组件是单行,并且还具有分配给它的唯一键.
每个rowin rows都是使用具有唯一键的组件构建的:
<TableRowItem key={item.id} data={item} columns={columnNames}/>
Run Code Online (Sandbox Code Playgroud)
而TableRowItem看起来像这样:
var TableRowItem = React.createClass({
render: function() {
var td = function() {
return this.props.columns.map(function(c) {
return <td key={this.props.data[c]}>{this.props.data[c]}</td>;
}, this);
}.bind(this);
return (
<tr>{ td(this.props.item) }</tr>
)
}
});
Run Code Online (Sandbox Code Playgroud)
是什么导致了唯一的关键道具错误?
我在Firefox-3.5.7/Firebug-1.5.3和Firefox-3.6.16/Firebug-1.6.2中观察到了这一点
当我开火萤火虫时:
var x = new Array(3)
console.log(x)
// [undefined, undefined, undefined]
var y = [undefined, undefined, undefined]
console.log(y)
// [undefined, undefined, undefined]
console.log( x.constructor == y.constructor) // true
console.log(
x.map(function() { return 0; })
)
// [undefined, undefined, undefined]
console.log(
y.map(function() { return 0; })
)
// [0, 0, 0]Run Code Online (Sandbox Code Playgroud)
这里发生了什么?这是一个错误,还是我误解了如何使用new Array(3)?
我在我的应用程序中使用React/JSX以实现我想要的,Lodash.
我需要根据条件重复一个元素一定次数,我该怎么做?
这是元素:
<span className="busterCards">?</span>;
我这样分配它:
let card;
if (data.hand === '8 or more cards') {
card = <span className="busterCards">?</span>;
}
Run Code Online (Sandbox Code Playgroud)
所以在这种情况下,我需要重复8次元素.使用Lodash的过程应该是什么?
我正在 React 中创建一个表(我是 React 的新手),但是 CategoryData 我们可以使用这些还是应该使用其他东西?它没有正确创建单元格,即它创建的单元格与<th>来自父级的单元格不对齐,并且它们根本没有单元格边框。它还发出以下警告:
Warning: validateDOMNesting(...): <div> cannot appear as a child of <tbody>. See Param > tbody > Row > div.
Warning: validateDOMNesting(...): <tr> cannot appear as a child of <div>. See Row > div > tr.
Warning: validateDOMNesting(...): <tr> cannot appear as a child of <div>. See CategoryData > div > tr.
Run Code Online (Sandbox Code Playgroud)
我不确定为什么会发生这些警告以及为什么表格单元格(来自CategoryData)没有对齐并且没有单元格边框。什么是正确的做到这一点呢?
代码
var Param = React.createClass({
getInitialState: function() {
return {
isLoading: true,
panelTitle: "",
data: [], …Run Code Online (Sandbox Code Playgroud) 我是一个React和React原生菜鸟,所以它可能是一个非常愚蠢的问题,但我如何在渲染函数中使用'for loop'来包含我的组件?这就是我做的
render() {
return (
<View style={styles.container}>
{ for (let i=0; i<20; i++)
{
//This is my component
<CounterButton />
}
}
</View>
);
}
Run Code Online (Sandbox Code Playgroud)
但是它抛出了一个错误,然后有人建议在代码中包含代码并在render函数中调用它,所以我做了
createButtons() {
for (let i =0; i<20; i++){
<CounterButton />;
}
}
render() {
return (
<View style={styles.container}>
{this.createButtons()}
</View>
);
}
Run Code Online (Sandbox Code Playgroud)
现在我没有看到错误,但它只是一个空白的屏幕.我知道你可以访问道具但是渲染函数应该主要只包含JSX代码吗?提前致谢.
我有一个大组件<User>和一个小组件<Task>,想给一个大组件一个按钮,然后点击它,将组件附加<Task>到<User>
<div>
<Task />
<button onClick={`Function here to append a new Task component`}>
New Task
</button>
</div>
Run Code Online (Sandbox Code Playgroud)
<div>
This is New task
</div>
Run Code Online (Sandbox Code Playgroud)