Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.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
Reactjs 如何加上「;“加号按钮”;在物料表的右上角,用于react并在react中调用我的特定函数_Reactjs_Material Table - Fatal编程技术网

Reactjs 如何加上「;“加号按钮”;在物料表的右上角,用于react并在react中调用我的特定函数

Reactjs 如何加上「;“加号按钮”;在物料表的右上角,用于react并在react中调用我的特定函数,reactjs,material-table,Reactjs,Material Table,这是我的代码: import React, { useState, useEffect } from 'react'; import { Fade } from "@material-ui/core"; import MaterialTable from 'material-table'; import { makeStyles } from '@material-ui/core/styles'; import './styles.css'; const useStyles = makeSt

这是我的代码:

import React, { useState, useEffect } from 'react';
import { Fade } from "@material-ui/core";
import MaterialTable from 'material-table';
import { makeStyles } from '@material-ui/core/styles';

import './styles.css';

const useStyles = makeStyles(theme => ({
    root: {
        flexGrow: 1,
        width: '70%',
        margin: 'auto',
        marginTop: 20,
        boxShadow: '0px 0px 8px 0px rgba(0,0,0,0.4)'
    }
}));

function User(props) {
    const classes = useStyles();
    const [checked, setChecked] = React.useState(false);

    useEffect(() => {
        setChecked(prev => !prev);
    }, [])

    const [state, setState] = React.useState({
        columns: [
            { title: 'name', field: 'name' },
            { title: 'Setor', field: 'sector' }
        ],
        data: [
            { name: 'Tom Brady', setor: 'Quarterback'},
            { name: 'Aaron Rodgers', setor: 'Quarterback'},
            { name: 'Ryan Tannehill', setor: 'Quarterback'},
            { name: 'Julian Edelman', setor: 'Wide Receiver'},
            { name: 'Julio Jones', setor: 'Wide Receiver'},
            { name: 'Marcus Mariota', setor: 'Quarterback'},
            { name: 'Patrick Mahomes', setor: 'Quarterback'},
            { name: 'Antonio Brown', setor: 'Wide Receiver'},
            { name: 'Eli Manning', setor: 'Quarterback'},
            { name: 'Antonio Brown', setor: 'Wide Receiver'},
            { name: 'Mike Evans', setor: 'Wide Receiver'},
            { name: 'Russel Wilson', setor: 'Quarterback'},
            { name: 'Drew Brees', setor: 'Quarterback'},
            { name: 'Cam Newton', setor: 'Quarterback'}
        ],
        actions: [
            { icon: 'create', tooltip: 'Edit', onClick: (event, rowData) => alert('Edit ' + rowData.name + '?')},
            { icon: 'lock', tooltip: 'Block', onClick: (event, rowData) => alert('Block ' + rowData.name + '?')},
            { icon: 'delete', tooltip: 'Delete', onClick: (event, rowData) => alert('Delete ' + rowData.name + '?')}
        ],
        options: {
            headerStyle: { color: 'rgba(0, 0, 0, 0.54)' },
            actionsColumnIndex: -1,
            exportButton: true,
            paging: true,
            pageSize: 10,
            pageSizeOptions: [],
            paginationType: 'normal'
        }
    });


    return (
        <>
            <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap" />
            <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons" />

            <Fade in={checked} style={{ transitionDelay: checked ? '300ms' : '0ms' }}>
                <div className={classes.root}>
                    <MaterialTable options={state.options} title="Users" columns={state.columns} data={state.data} actions={state.actions}></MaterialTable>
                </div>
            </Fade>
        </>
    );
}

export default User;
但是这段代码为物料表调用了一个特定的函数,我想调用我自己的函数,如何添加上一个按钮并调用我自己的函数? 我自己的函数将打开一个包含一些输入的模式,这些输入比我在表中显示的要多。

您可以创建自定义模式

{
控制台日志(“单击”);
}
}
]}
/>

工作演示:

您可以使用position或isFreeAction属性将动作显示在那里

<MaterialTable
  title="Editable Example"
  columns={state.columns}
  data={state.data}
  actions={[
    {
      icon: "add_box",
      tooltip: "my tooltip",
      isFreeAction: true,
      onClick: () => {
        console.log("clicked");
      }
    }
  ]}
/>
{
控制台日志(“单击”);
}
}
]}
/>
位置参数更灵活,为按钮提供了不同的位置

另一方面,isFreeAction只接受动作类型的布尔值


从Mosh Feu克隆的沙盒

谢谢Mosh!很好。很高兴听到:)Good luck.onAddRow添加了一个功能,即显示一个新行,用户可以在其中输入数据并保存或取消新的数据输入。使用解决方案时,此功能将丢失。有没有办法修改工具提示并保留默认的OnAddressRow功能?实际上,我使用了
OnAddressRow
API。你能用这个创建一个代码沙盒吗?(我不确定这是否可能)tr
<MaterialTable
  title="Editable Example"
  columns={state.columns}
  data={state.data}
  actions={[
    {
      icon: "add_box",
      tooltip: "my tooltip",
      isFreeAction: true,
      onClick: () => {
        console.log("clicked");
      }
    }
  ]}
/>