相关疑难解决方法(0)

在React JSX中循环

我正在尝试在React JSX中执行以下操作(其中ObjectRow是一个单独的组件):

<tbody>
    for (var i=0; i < numrows; i++) {
        <ObjectRow/>
    } 
</tbody>
Run Code Online (Sandbox Code Playgroud)

我意识到并理解为什么这不是有效的JSX,因为JSX映射到函数调用.然而,来自模板领域并且是JSX的新手,我不确定如何实现上述(多次添加组件).

javascript reactjs

1131
推荐指数
63
解决办法
74万
查看次数

了解React.js中数组子项的唯一键

我正在构建一个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)

是什么导致了唯一的关键道具错误?

javascript reactjs

549
推荐指数
9
解决办法
48万
查看次数

JavaScript"new Array(n)"和"Array.prototype.map"怪异

我在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)

javascript arrays map-function

192
推荐指数
10
解决办法
4万
查看次数

如何使用JSX重复一次元素n次

我在我的应用程序中使用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的过程应该是什么?

javascript lodash react-jsx

52
推荐指数
8
解决办法
3万
查看次数

警告:validateDOMNesting(...): &lt;div&gt; 不能作为 &lt;tbody&gt; 的孩子出现

我正在 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)

javascript reactjs

13
推荐指数
1
解决办法
3万
查看次数

如何在react本机应用程序的render函数中包含Javascript代码?

我是一个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代码吗?提前致谢.

react-native

8
推荐指数
1
解决办法
2206
查看次数

在按钮单击时在另一个组件中附加一个 React 组件

我有一个大组件<User>和一个小组件<Task>,想给一个大组件一个按钮,然后点击它,将组件附加<Task><User>

用户.jsx

<div>
  <Task />
  <button onClick={`Function here to append a new Task component`}>
    New Task
  </button>
</div>
Run Code Online (Sandbox Code Playgroud)

任务.jsx

<div>
  This is New task
</div>
Run Code Online (Sandbox Code Playgroud)

javascript reactjs

7
推荐指数
2
解决办法
2万
查看次数