gpt4 book ai didi

reactjs - 自定义 react-gridjs 的表头

转载 作者:行者123 更新时间:2023-12-03 18:56:43 25 4
gpt4 key购买 nike

不使用默认搜索栏,我想将其自定义如下:

  • 在搜索栏前面添加一个按钮。
  • 在搜索占位符中使用图标 (<i className="fa fa-search"/>)。

  • Image
    到目前为止,这是我的代码:
    import { Grid, _ } from 'gridjs-react';

    const tableColumns = [
    'Name',
    'Phone',
    {
    name: 'Custom component',
    formatter: (text) => _(<b>{text}</b>)
    }
    ]
    const tableData = [
    ['John', 12345, 'myText1'],
    ['Mike', 67891, 'myText2'],
    ]

    export default function myCustomGrid() {
    return (
    <Grid
    sort={true}
    search={true} // This adds the search inp
    columns={tableColumns}
    data={tableData}
    language={{
    search: {
    placeholder: '🔍 Search...'
    }
    }}
    pagination={{
    enabled: true,
    limit: 2
    }}
    />
    );
    }

    最佳答案

    这可能是 portal 的一个很好的用例。 .
    这使我们能够更灵活地决定我们在哪里渲染我们的按钮。使用门户,我们可以使按钮成为搜索输入的兄弟:

    const gridjsHeadRoot = document.getElementsByClassName("gridjs-head");

    class GridHeaderButton extends React.Component {
    constructor(props) {
    super(props);
    this.el = document.createElement("button");
    this.el.innerText = "Click";
    this.el.style.cssText = `
    background-color: #0069d9;
    color: #fff;
    border-radius: .25rem;
    padding: .375rem .75rem;
    float: right
    `;
    this.el.onclick = function () {
    // Do something
    };
    }

    componentDidMount() {
    gridjsHeadRoot[0].appendChild(this.el);
    }

    componentWillUnmount() {
    gridjsHeadRoot[0].removeChild(this.el);
    }

    render() {
    return ReactDOM.createPortal(this.props.children, this.el);
    }
    }
    然后你可以像这样使用它:
    function MyCustomGrid() {
    return (
    <Grid
    sort={true}
    search={true} // This adds the search inp
    columns={tableColumns}
    data={tableData}
    language={{
    search: {
    placeholder: "🔍 Search...",
    },
    }}
    pagination={{
    enabled: true,
    limit: 2,
    }}
    />
    );
    }

    export default function App() {
    return (
    <div className="App">
    <MyCustomGrid />
    <GridHeaderButton />
    </div>
    );
    }
    您放置位置的顺序 GridHeaderButton在这里很重要。因为 GridHeaderButton定位在 MyCustomGrid 内渲染的元素这意味着你应该把 GridHeaderButton下面 CustomGrid否则将无法正常工作。

    Sandbox Example

    关于reactjs - 自定义 react-gridjs 的表头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65849849/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com