Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用React在表中合并2个或多个单元格_Javascript_Reactjs_Merge - Fatal编程技术网

Javascript 使用React在表中合并2个或多个单元格

Javascript 使用React在表中合并2个或多个单元格,javascript,reactjs,merge,Javascript,Reactjs,Merge,我是新来的。正在尝试创建合并单元格的功能。在普通js中,我会传递td的引用以访问样式或其他属性。但在这里,传递这个是绑定整个类。如何获取特定单元格的引用。我还尝试将单元格和行号的索引传递给merge函数,但click事件没有按预期工作。下面是我正在编写的代码片段。让我们了解一下如何在一个表中合并两个单元格。谢谢 function getTabularStateFromStore(){ return( { row: 0, col: 0, rows:[

我是新来的。正在尝试创建合并单元格的功能。在普通js中,我会传递td的引用以访问样式或其他属性。但在这里,传递这个是绑定整个类。如何获取特定单元格的引用。我还尝试将单元格和行号的索引传递给merge函数,但click事件没有按预期工作。下面是我正在编写的代码片段。让我们了解一下如何在一个表中合并两个单元格。谢谢

function getTabularStateFromStore(){
  return(
    {
      row: 0,
      col: 0,
      rows:[]
    }
  )
}
class Table extends React.Component{
  constructor(){
    super();
    this.state = getTabularStateFromStore();
    this.onChangeOfRow = this.onChangeOfRow.bind(this);
    this.onChangeOfCol = this.onChangeOfCol.bind(this);
    this.merge = this.merge.bind(this);
  }
  render(){
     let rows = this.state.rows.map((row,index) => {
       var cells = [];
       for (var i in row) {
        cells.push(<td rowSpan={row[i].rowSpan} colSpan={row[i].colSpan} style={{minWidth: "30px", "padding":"5px"}} key={i} onClick={this.merge}></td>);
      }
      return <tr key={index}>{cells}</tr>;
    });
    return(
      <div>
        <div>
          <input type="number" size="4" value={this.state.row} default min="0" onChange={this.onChangeOfRow} />
          <input type="number" size="4" value={this.state.col} min="0" onChange={this.onChangeOfCol} />
        </div>
        <table>
          <tbody>
            {rows}
          </tbody>
        </table>
      </div>
    );
  }
  merge(cell, row) {
        //o.style.backgroundColor = "red";
        console.log("cell number: "+cell);
        console.log("row number: "+row);

    }
  onChangeOfRow(e) {
    this.updateRowsData(Number(e.target.value), this.state.col)
  }
  onChangeOfCol(e) {
    this.updateRowsData(this.state.row, Number(e.target.value))
  }
  updateRowsData(row, col){
    let rows = []
    for(var i = 0; i < row; i++){
       let cells = []
       for(var j = 0; j < col; j++){
         cells.push(Object.assign({value:"", rowSpan: 1, colSpan: 1}));
    }
     rows.push(cells);
   }
   this.setState({rows: rows, row: row, col: col})
  }
}
export default Table;
函数getTabularStateFromStore(){ 返回( { 行:0, 上校:0, 行:[] } ) } 类表扩展了React.Component{ 构造函数(){ 超级(); this.state=getTabularStateFromStore(); this.onChangeOfRow=this.onChangeOfRow.bind(this); this.onChangeOfCol=this.onChangeOfCol.bind(this); this.merge=this.merge.bind(this); } render(){ 让rows=this.state.rows.map((行,索引)=>{ var单元格=[]; 用于(第行中的var i){ 细胞。推(); } 返回{cells}; }); 返回( {rows} ); } 合并(单元格、行){ //o、 style.backgroundColor=“红色”; 控制台日志(“单元号:+单元); console.log(“行号:”+行); } onChangeOfRow(e){ this.updateRowsData(编号(e.target.value)、this.state.col) } onChangeOfCol(e){ this.updateRowsData(this.state.row,Number(e.target.value)) } updateRowsData(行、列){ 让行=[] 对于(变量i=0;i