Material-table: Warning: Failed prop type: Invalid prop `actions[0]` supplied to `MaterialTable`.

Created on 22 Dec 2018  ·  16Comments  ·  Source: mbrn/material-table

This error shows up in the console. I have tried to remove each singular line inside of the 'actions' but the error only goes away if I remove 'actions' itself or everything inside.

This is my 'actions' code:
actions={[
{
icon: Print,
tooltip: 'Print',
onClick: (event, rowData) => {
this.setState({ rowData })
this.handleClickOpen()
},
}
]}

bug

Most helpful comment

Try this

icon: () => <Edit/>

All 16 comments

Hi @halvardssm ,

I could not reproduce case. Which version of material-table do you use?

I have that error too, first (but not sure) in version 1.6 and definitely in 1.7 and 1.8... my code hasn't changed since 1.6 (except localization and icons) and looks like this:


render() {
        // configure columns
        var columns = [
            {
                title: this.props.t('clubs.number'),
                field: 'number',
                type: 'numeric',
            },{
                title: this.props.t('clubs.name'),
                field: 'name',
            },{
                title: this.props.t('clubs.address'),
                field: 'address',
            },
        ];

        // configure actions
        var actions = [
            {
                icon: EditIcon,
                tooltip: t('clubs.edit'),
                onClick: this.handleClickEdit,
                iconProps: {
                    style: {
                        color: blue[400],
                    },
                },
            },{
                icon: CopyIcon,
                tooltip: t('clubs.copy'),
                onClick: this.handleClickCopy,
                iconProps: {
                    style: {
                        color: blue[400],
                    },
                },
            },{
                icon: DeleteIcon,
                tooltip: t('clubs.delete'),
                onClick: this.handleClickDelete,
                iconProps: {
                    style: {
                        color: red[500],
                    },
                },
            },
        ];

        // load data table locales
        var localization = localeMaterialTable[this.props.i18n.language](t);

        // data table config
        var options = {
            actionsColumnIndex: -1,
        };

        // configure icons
        var icons = {
            Check: Check,
            Export: SaveAlt,
            Filter: FilterList,
            FirstPage: FirstPage,
            LastPage: LastPage,
            NextPage: ChevronRight,
            PreviousPage: ChevronLeft,
            Search: Search,
            ThirdStateCheck: Remove,
            ViewColumn: ViewColumn,
        };

        return (
            <div className={classes.root}>
                <MaterialTable
                    title={t('clubs.clubs')}
                    data={this.state.clubs}
                    columns={columns}
                    options={options}
                    localization={localization}
                    actions={actions}
                    icons={icons}
                />
            </div>
        );
}

I've ignored this error until now, because everything is working afaik...

@mbrn Thanks for looking into this. I recently updated to 1.8 from 1.2, I am not completely sure but I don't think I had the error in 1.2.

@bohrsty You should look at the new localization props. It has more details and your current localization may not handle new ones.

Here is my code in case it helps:

<MaterialTable
          icons={{
            FirstPage: FirstPage,
            LastPage: LastPage,
            NextPage: KeyboardArrowRight,
            PreviousPage: KeyboardArrowLeft,
            Search: Search,
          }}
          columns={[
            {
              title: 'Image', field: 'image', render: rowData => {
                return (
                  <img className="table-picture" src={rowData.image} alt=''></img>
                )
              }
            },
            { title: 'SKU', field: 'sku' },
            { title: 'Barcode', field: 'barcode' },
            { title: 'Name', field: 'productname' },
            { title: 'MSRP', field: 'msrp' },
            { title: 'Price', field: 'price' },
          ]}
          data={this.state.results.data}
          title={this.state.title}
          actions={[
            {
              icon: Print,
              tooltip: 'Print',
              onClick: (event, rowData) => {
                this.setState({ rowData })
                this.handleClickOpen()
              }
            }
          ]}
        />

I understand it. It is related with PropTypes. You are right. This is a bug and i will resolve it in next release:

image

Thank you for your support! Let me know if you would like me to make a PR on it :)

Why not @halvardssm:) You will just change line that i show on previous post.

Currently:
__icon: PropTypes.string.isRequired,__

Will change with:
__PropTypes.oneOfType([PropTypes.element, PropTypes.func, PropTypes.string]).isRequired,__

Will do then 👍

same issues happened
Warning: Failed prop type: Invalid prop action of type function supplied to MTableAction, expected object.
my version is 1.23.6
here my code

<MaterialTable
                columns={[
                    {title:"nickname",field:"nickname",sorting:false,
                        render:rowData=>{
                            let isControl=suspectsPhone.includes(rowData.phonenumber)
                            return <ControledMan isControl={isControl} text={rowData.nickname||'undo'}/>
                        }
                    },
                    {title:"gender",field:"gender",sorting:false,cellStyle:{whiteSpace:'nowrap'},render:rowData=>(rowData.gender||'未知')},
                    {title:"phonenumber号码",field:"phonenumber",sorting:false},
                    {title:"mainserver",field:"mainserver",sorting:false},
                ]}
                actions={[
                    rowData => {
                        let isControl=suspectsPhone.includes(rowData.phonenumber)
                        return {
                            icon: isControl?'lock':'lock_open',
                            tooltip: isControl?'cancel':'add',
                            onClick: (event, rowData) => isControl?this.unbind(rowData._id,rowData.phonenumber):this.bind(rowData)
                        }
                    }
                ]}
                data={query => {
                    let skip=query.page>0?query.page*query.pageSize:0
                    // let timesort = JSON.stringify({"updatedAt":-1})
                        console.log(query)
                        // if(orderBy)
                        return new Promise((resolve, reject) => {
                            redFetch(`users?$pagesize=1&$limit=${query.pageSize}&$offset=${skip}`)
                            .then(res=>{
                                console.log(res)
                                resolve({
                                    data:res.data,
                                    totalCount:res.count,
                                    page:query.page
                                })
                            })
                        })
                    }
                }
                title="member"
                /*rowStyle={{display:'flex'}}*/
                options={{...tableOptions}}
                localization={{...localization}}
            />

@symnetry

Can you upgrade to 1.29.1 please?

@mbrn
Great ,upgrade to 1.29.1 then resolve this problem,
Thank you for your reply!

I have a package material-table: 1.39.0 and react: 16.8.6, app is work but I show mistake i console:
Warning: Failed prop type: Invalid prop actions[0] supplied to MaterialTable.

Problem in this code:
actions={[
{
icon: PersonAdd,
tooltip: 'Добавить',
isFreeAction: true,
onClick: (event) => alert("Вы хотите добавить нового пользователя!")
},
rowData => ({
icon: Edit,
tooltip: 'Редактировать',
onClick: (event, rowData) => alert("Вы хотите отредактировать пользователя " + rowData.id)
})
]}

Please help me.

Try this

icon: () => <Edit/>

icon: () =>

Thanks, this code is works!

I am having same error in Material Table using this

actions={[
                  {
                    icon: "add",
                    isFreeAction: true,
                    onClick: undefined
                  }
                ]}
                components={{
                  Action: props => <NewBin refetch={this.requireRefetch} />
                }}

and this

actions={[
                  {
                    icon: () => <NewBin refetch={this.requireRefetch} />,
                    isFreeAction: true,
                    onClick: undefined
                  }
                ]}

Issued solved. If any one get this error you can try this

actions={[
                  {
                    icon: "add",
                    isFreeAction: true,
                    onClick: () => {}
                  }
                ]}
                components={{
                  Action: props => <NewBin refetch={this.requireRefetch} />
                }}
Was this page helpful?
0 / 5 - 0 ratings

Related issues

revskill10 picture revskill10  ·  3Comments

Likurg2010 picture Likurg2010  ·  3Comments

KKrisu picture KKrisu  ·  3Comments

timrchavez picture timrchavez  ·  3Comments

lazeebee picture lazeebee  ·  3Comments