render() {
    this.clickNum = 0;
    const { selectRow, row, isSelected, className, index, hidden } = this.props;
    let { style } = this.props;
    let backgroundColor = null;
    let selectRowClass = null;

    if (selectRow) {
      backgroundColor = Utils.isFunction(selectRow.bgColor) ?
        selectRow.bgColor(row, isSelected) : ( isSelected ? selectRow.bgColor : null);

      selectRowClass = Utils.isFunction(selectRow.className) ?
        selectRow.className(row, isSelected) : ( isSelected ? selectRow.className : null);
    }

    if (Utils.isFunction(style)) {
      style = style(row, index);
    } else {
      style = { ...style } || {};
    }
    // the bgcolor of row selection always overwrite the bgcolor defined by global.
    if (style && backgroundColor && isSelected) {
      style.backgroundColor = backgroundColor;
    }
    const trCss = {
      style: { ...style },
      className: classSet(selectRowClass, className)
    };

    return (
      <tr { ...trCss }
          onMouseOver={ this.rowMouseOver }
          onMouseOut={ this.rowMouseOut }
          onClick={ this.rowClick }
          hidden={ hidden }
          onDoubleClick={ this.rowDoubleClick }>{ this.props.children }</tr>
    );
  }
if clickToSelectAndEditCell is enabled,
 there should be a delay to prevent a selection changed when
 user dblick to edit cell on same row but different cell