首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何允许用户单击行

如何允许用户单击行
EN

Stack Overflow用户
提问于 2018-10-09 22:06:57
回答 2查看 272关注 0票数 1

我正在使用griddle-react来显示一个表。我在使每个单元格可点击时遇到问题。现在,我只想将id值打印到控制台。下面是我的代码:

代码语言:javascript
复制
import React from "react";
import ReactDOM from "react-dom";
import Griddle, { plugins } from "griddle-react";

import "./styles.css";

const styleConfig = {
  icons: {
    TableHeadingCell: {
      sortDescendingIcon: <small>(desc)</small>,
      sortAscendingIcon: <small>(asc)</small>
    }
  },
  classNames: {
    Row: "row-class"
  },
  styles: {
    Filter: { fontSize: 18 },
    NextButton: {}
  }
};

export default class App extends React.Component {
  getData() {
    var data = [
      {
        id: 0,
        name: "Mayer Leonard",
        city: "Kapowsin",
        state: "Hawaii",
        country: "United Kingdom",
        company: "Ovolo",
        favoriteNumber: 7
      },
      {
        id: 1,
        name: "Mayer Leonard",
        city: "Kapowsin",
        state: "Hawaii",
        country: "United Kingdom",
        company: "Ovolo",
        favoriteNumber: 7
      }

    ];
    return data;
  }

  constructor() {
    super();
    this.state = {
      data: this.getData(),
      selectedRowId: 0
    };
    this.onRowClick = this.onRowClick.bind(this);
  }

  onRowClick(row) {
    this.setState({ selectedRowId: row.props.data.id });
    console.log("SELECTED");
  }

  render() {
    const { data } = this.state;
    const rowMetadata = {
      bodyCssClassName: rowData =>
        rowData.id === this.state.selectedRowId ? "selected" : ""
    };
    return (
      <Griddle
        styleConfig={styleConfig}
        data={data}
        plugins={[plugins.LocalPlugin]}
        rowMetadata={rowMetadata}
        onRowClick={this.onRowClick}
      />
    );
  }
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

正如你所看到的,我的表中只有两条记录具有不同的id,所以如果我在第一行的任何地方单击,我想打印"0“值,这是id,对于第二行,我想打印"1”。任何帮助都是最好的!

EN

回答 2

Stack Overflow用户

发布于 2018-10-09 22:51:24

也许你可以试试这个

代码语言:javascript
复制
  onRowClick(event) {
      this.setState({ selectedRowId: event.target.id });
  }
票数 0
EN

Stack Overflow用户

发布于 2019-05-06 22:51:36

您可以使用RowEnhancer来满足您的需求,在下面的情况下,我将通过控制台记录被单击的行的id

代码语言:javascript
复制
  <Griddle
    styleConfig={styleConfig}
    data={data}
    plugins={[plugins.LocalPlugin]}
    rowMetadata={rowMetadata}
    components={{
    RowEnhancer: OriginalComponent => props => (
     <OriginalComponent
        {...props}
        onClick={() => console.log(data[props.griddleKey].id)}
     />
   )}}>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52723054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档