javascript - Material 表不会添加行

标签 javascript reactjs material-ui material-table

对于 JS 来说,React 还算陌生。尝试将 Material 表与添加行按钮一起使用。 添加行不会添加行。一刷新行就被重置。 我很确定我在设置/更新状态时做错了什么。

export default function App() {
  return (
    <div className="App">
      <Tabl
        obj={{
          a: "a",
          items: [{ x: 1 }, { x: 2 }, { x: 3 }]
        }}
      />
    </div>
  );
}

class Tabl extends Component {
  constructor(props) {
    super(props);
    this.state = {
      obj: props.obj
    };
    console.log(JSON.stringify(this.state.obj));
  }

  updateState(newData) {
    this.setState({
      obj: [...this.state.obj.items, newData]
    });
  }

  render() {
    const currObj = this.state.obj;
    const column = [
      {
        title: "a",
        field: "x"
      }
    ];

    const tableIcons = {
      Add: forwardRef((props, ref) => <AddBox {...props} ref={ref} />),
      Check: forwardRef((props, ref) => <Check {...props} ref={ref} />),
      Clear: forwardRef((props, ref) => <Clear {...props} ref={ref} />)
    };

    return (
      <MaterialTable
        data={currObj.items}
        columns={column}
        icons={tableIcons}
        options={{
          search: false,
          paging: false
        }}
        editable={{
          onRowAdd: (newData) =>
            new Promise((resolve, reject) => {
              setTimeout(() => {
                this.updateState(newData);
                resolve();
              }, 1000);
            })
        }}
      />
    );
  }
}
export default Tabl;

提前致谢。

最佳答案

this.updateState 方法未绑定(bind)到类。

您可以像这样在构造函数中绑定(bind),

constructor(props) {
    super(props);
    this.state = {
      obj: props.obj
    };
    console.log(JSON.stringify(this.state.obj));
    this.updateState= this.updateState.bind(this);
  }

关于javascript - Material 表不会添加行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64817680/

相关文章:

X 点击按钮后的 JavaScript

javascript检测div类的存在,如果为真,则更改不同div的innerHTML

javascript - 在 React Hook 表单中显示来自 Controller 的错误

javascript - 渲染作为 prop 传递的 React 元素时遇到问题

reactjs - Material UI 中的响应式排版?

javascript - 如何使用 javascript 或 jQuery 引用 csv 或 json 文件中的项目动态地将项目和属性添加到 HTML

javascript - 用于多绘图的 jQuery 就绪函数

material-ui - 无法设置日期选择器弹出对话框的样式

javascript - React - setState() 在未安装的组件上

javascript - 结合 ReactJS + Marzipano 时出现白屏?