相关疑难解决方法(0)

了解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万
查看次数

使用this.refs的弃用警告

我有一个React组件,我想在单击时切换一个css类.

所以我有这个:

export class myComponent extends React.Component {
  constructor() {
    super();
    this.state = { clicked: false };
    this.handleClick = this.handleClick.bind(this);
  }

  render() {
    return (
      <div>
        <div onClick={this.clicked}><span ref="btn" className="glyphicon">&nbsp;</span></div>
      </div>
    );
  }

  handleClick() {
    this.refs.btn.classList.toggle('active');
  }

  componentDidMount() {
    this.refs.btn.addEventListener('click', this.handleClick);
    this.setState({
      clicked: this.state.clicked = true,
    });
  }

  componentWillUnmount() {
    this.refs.btn.removeEventListener('click', this.handleClick);
    this.setState({
      clicked: this.state.clicked = false,
    });
  }
}
Run Code Online (Sandbox Code Playgroud)

这个问题是ESLint不断告诉我"this.refs"已经折旧了.

我该怎么做?如何修复它以便不使用折旧代码?

javascript reactjs

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

即使组件树没有更改,我如何确保 React 创建组件的新实例?

React 根据树中元素的名称更新其组件树。

例如:

<div>
  <MyComponent/>
</div>
Run Code Online (Sandbox Code Playgroud)

和:

<div>
  <MyComponent enabled/>
</div>
Run Code Online (Sandbox Code Playgroud)

...导致 React 使用相同的<MyComponent>实例(因为组件名称没有改变)。这非常有用,因为它确保组件实例内的内部状态持续存在。

请参阅文档了解更多详细信息。

我的问题:“有没有办法强制在某些情况下创建新实例?”

因此,MyComponent如果(比方说)发生了变化,我希望实例化一个新实例,而不是使用相同的实例prop 'x'

javascript reactjs

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

标签 统计

javascript ×3

reactjs ×3