javascript 如何在reactJS表中的按钮旁边显示div元素

fsi0uk1n  于 2023-02-28  发布在  Java
关注(0)|答案(1)|浏览(105)

如何在reactJS表中的按钮旁边显示div元素
我正在使用一个表组件,我需要在小窗口中显示一些选项,一旦我点击外面就可以关闭。
选项:

表中的操作按钮:

现在我可以关闭窗口,但定位是非常困难的地方旁边的按钮。
这是我的表代码。
注:表是一些常用组件。

<Table   
  className="table-hover"
    headers={MyAPi.getListHeaders()}
    data={this.state.data}
    dataKey=“I”d
    dataValue=“value”
    actionIcon="gear"
    action={( rowIndex: any, row: any, id: string,value: string ) => {
        if (rowIndex === this.state.rowIndex) {
            this.setState({
                isOpen: false,
                rowIndex: -1,
                eventY: -680
            });
            return;
        }
        this.setState({
            isOpen: true,
            items: this.state.items,
            rowIndex: rowIndex,
            eventY: -680 + rowIndex * 40
        });
        
    }}
    
></Table>

{this.state.isOpen ? (
    <div
        style={{
            width: "110px",
            height: "120px",
            transform: "translateX(590%) translateY(" + this.state.eventY + "%)",
            backgroundColor: "#f3f4f5",
            border: "1px solid #C4C8CF"
        }}
    >
        <div style={{ listStyleType: "none" }}>
            {this.state.dropdownItems.map((item: any, index: number) => {
                return (
                    <li
                        style={{
                            color: "#444444",
                            paddingTop: "10px",
                            paddingLeft: "15px",
                            textAlign: "left",
                            fontSize: "14px",
                            cursor: "pointer"
                        }}
                        key={item}
                        onClick={(e) => {
                            this.handleClick(e);
                        }}
                    >
                        {item}
                    </li>
                );
            }, this)}
        </div>
    </div>
) : (
    <></>
)}

这里的问题是在计算y元素的时候发生的,对于每个记录都是不同的,我需要保持状态,所以有什么帮助吗?

wwtsj6pe

wwtsj6pe1#

CSS可以解决这个问题,创建Table cell > position >> relativeDialog > position >> absolute,这将作为您渲染的Dialog的父对象

<TableCell
                style={{
                  position: "relative"
                }}
                align="right"
              >
                <Settings
                  clickedName={clickedName}
                  handleSet={handleSet}
                  name={row.name}
                  dropdownItems={dropdownItems}
                />
              </TableCell>

动作按钮

function Settings({
  ...props
}) {
  return (
    <IconButton onClick={(e) => handleSet(name)}>
      <SettingsIcon />
      {clickedName === name && (
        <Dialog isOpen={true}  dropdownItems={dropdownItems} />
      )}
    </IconButton>
  );
}

相关问题