React.js表:“删除行”按钮以可视方式删除不正确的行

克里斯·蒙哥马利

我正在使用React.js动态创建一个包含文本框的html表。我有可以通过单击按钮删除的行。我希望,当我在第一行上单击“删除”时,该表将重新渲染,而第一行已删除。但是,当react重新绘制表格时,看起来它总是从DOM中删除表格的最后一行,而不是使用state对象的实际值也许我发现了一个错误?这是我的代码:

/** @jsx React.DOM */

var MyApp = React.createClass({
    getInitialState: function () {
      return {
        col_one: ['c1r1', 'c1r2', 'c1r3'],
        col_two: ['c2r1', 'c1r2', 'c1r3'],
        col_three: ['c3r1', 'c3r2', 'c3r3']
      }
    },
    handleCellChange: function (colName, index, e) {
      console.log('onChange:', colName, index, e.target.value);
    },
    handleRemove: function (i) {
      var that = this;
      console.log('removing row:',i);
      _.forEach(this.state, function (val, colName) {
        that.state[colName].splice(i,1); // BUG???
        //_.pullAt(that.state[key], i); // doesn't work either
      });
      console.log(this.state);
      this.setState(this.state);

    },
    render: function() {
      var that = this,
        rows = [],
        cols = _.keys(this.state);

      rows.push(
      <tr>
      {cols.map(function (col) {
        return (
          <th>{col}</th>
        )
      })}
      </tr>
      )
      for (var i = 0; i < this.state[cols[0]].length; i++) {
        rows.push(
          <tr>
            {cols.map(function (col) {
              return (
                <td>
                  <input type="text" defaultValue={that.state[col][i]} onChange={that.handleCellChange.bind(that, col, i)} />
                </td>
              )
            })}
            <td>
              <button onClick={this.handleRemove.bind(this, i)}>Remove</button>
            </td>
          </tr>
        )
      }

      return (
        <table>
          <tbody>
            {rows}
          </tbody>
        </table>
      );
    }
});

React.renderComponent(<MyApp />, document.body);

在这里被视为JSBin

乔尼·布坎南

您正在使用defaultValue-使输入成为不受控制的组件,该组件将设置初始值,但React不会再次触摸其显示值,除非您将整个组件都炸掉(例如,对其进行了key更改或更改了祖先)并且从头开始重新创建它。

这就是为什么您看不到新defaultValue显示的原因-因为每行上没有唯一键,React发现重新渲染时少了一行,并从真实DOM中删除了最后一行,但是任何新defaultValue的保留输入行没有效果..

这是相同的代码,但使用value,使它成为受控组件,反映了value重新渲染后得到的新代码

http://jsbin.com/hacitidaqe/1/

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

VBA如何删除不正确的离散行

来自分类Dev

从列表中删除行后,React.js更新UI

来自分类Dev

删除表附近的语法不正确

来自分类Dev

React Material UI插入和删除行

来自分类Dev

CRUD删除-React JS

来自分类Dev

React Native ListView:删除时删除了错误的行

来自分类Dev

React.js:单击按钮添加/删除输入字段

来自分类Dev

React.js:为什么删除按钮不起作用?

来自分类Dev

动态删除行后从视图中发布不正确的值

来自分类Dev

React Promise异步任务顺序不正确

来自分类Dev

react-map-gl-印度geoLocation显示不正确

来自分类Dev

React + Electron:部门的组件布局不正确

来自分类Dev

react-popper在安装上的位置不正确

来自分类Dev

从setTimeout调用的函数显示不正确的React状态

来自分类Dev

GH页面加载不正确的React Router页面?

来自分类Dev

React Native:WebView的高度设置不正确

来自分类Dev

使用 React 的 WordPress 模板。不正确的字符

来自分类Dev

React Native,在Press上工作不正确

来自分类Dev

在iOS 8.1中,当我在UITableView处于编辑模式下单击行的删除按钮时,该行及其上方的那些显示不正确

来自分类Dev

从行中删除下拉列表和文本字段会删除ReactJS中状态更改的不正确字段

来自分类Dev

MERN-删除React Data Table组件中的项目/行

来自分类Dev

使用Angular的HTML表中的行总和不正确

来自分类Dev

R导入表-行显示不正确

来自分类Dev

表中新插入的行的格式不正确

来自分类Dev

如何使用React中的删除按钮从列表中删除项目?

来自分类Dev

nhibernate,行被另一个事务更新或删除(或未保存的值映射不正确)

来自分类Dev

React中的删除线

来自分类Dev

React.js:如何在特定行上编辑表?

来自分类Dev

尝试获取表中单击的行的数据 react js

Related 相关文章

  1. 1

    VBA如何删除不正确的离散行

  2. 2

    从列表中删除行后,React.js更新UI

  3. 3

    删除表附近的语法不正确

  4. 4

    React Material UI插入和删除行

  5. 5

    CRUD删除-React JS

  6. 6

    React Native ListView:删除时删除了错误的行

  7. 7

    React.js:单击按钮添加/删除输入字段

  8. 8

    React.js:为什么删除按钮不起作用?

  9. 9

    动态删除行后从视图中发布不正确的值

  10. 10

    React Promise异步任务顺序不正确

  11. 11

    react-map-gl-印度geoLocation显示不正确

  12. 12

    React + Electron:部门的组件布局不正确

  13. 13

    react-popper在安装上的位置不正确

  14. 14

    从setTimeout调用的函数显示不正确的React状态

  15. 15

    GH页面加载不正确的React Router页面?

  16. 16

    React Native:WebView的高度设置不正确

  17. 17

    使用 React 的 WordPress 模板。不正确的字符

  18. 18

    React Native,在Press上工作不正确

  19. 19

    在iOS 8.1中,当我在UITableView处于编辑模式下单击行的删除按钮时,该行及其上方的那些显示不正确

  20. 20

    从行中删除下拉列表和文本字段会删除ReactJS中状态更改的不正确字段

  21. 21

    MERN-删除React Data Table组件中的项目/行

  22. 22

    使用Angular的HTML表中的行总和不正确

  23. 23

    R导入表-行显示不正确

  24. 24

    表中新插入的行的格式不正确

  25. 25

    如何使用React中的删除按钮从列表中删除项目?

  26. 26

    nhibernate,行被另一个事务更新或删除(或未保存的值映射不正确)

  27. 27

    React中的删除线

  28. 28

    React.js:如何在特定行上编辑表?

  29. 29

    尝试获取表中单击的行的数据 react js

热门标签

归档