Я преобразовал ваш компонент в класс, и теперь он работает, как вы хотели.Ниже вы можете увидеть ошибку, которая происходила, когда вы пытались использовать функциональный компонент.Вероятно, это связано с тем, как построен mui-datatables
.Вероятно, для работы требуется компонент класса.
Рабочий пример для CodeSandbox
import React from "react";
import ReactDOM from "react-dom";
import MUIDataTable from "mui-datatables";
const columns = [
{
name: "name",
label: "Name"
},
{
name: "company",
label: "Company"
},
{
name: "city",
label: "City"
},
{
name: "state",
label: "State"
}
];
const data = [
{ name: "Joe James", company: "Test Corp", city: "Yonkers", state: "NY" },
{ name: "John Walsh", company: "Test Corp", city: "Hartford", state: "CT" },
{ name: "Bob Herm", company: "Test Corp", city: "Tampa", state: "FL" },
{ name: "James Houston", company: "Test Corp", city: "Dallas", state: "TX" }
];
class MyComponent extends React.Component {
constructor(props) {
super(props);
this.state = {
myState: "default value"
};
this.options = { onRowClick: this.onRowClick };
this.onRowClick = this.onRowClick.bind(this);
}
onRowClick(rowData, rowMeta) {
console.log(this.state.myState); //always default value
}
render() {
return (
<div>
<MUIDataTable
title={"Employee List"}
data={data}
columns={columns}
options={{ onRowClick: this.onRowClick }}
/>
<button onClick={() => this.setState({ myState: "State changed" })}>
Change state
</button>
<p>{this.state.myState}</p>
</div>
);
}
}
const rootElement = document.getElementById("root");
ReactDOM.render(<MyComponent />, rootElement);
С вашим кодом я получил следующую ошибку:
Warning: Function components cannot be given refs. Attempts to access this ref will fail. Did you mean to use React.forwardRef()?
Check the render method of `WithStyles(Tooltip)`.
in Tooltip (created by WithStyles(Tooltip))
in WithStyles(Tooltip) (created by t)
in t (created by l)
in span (created by l)
in div (created by l)
in div (created by ForwardRef(Toolbar))
in ForwardRef(Toolbar) (created by WithStyles(ForwardRef(Toolbar)))
in WithStyles(ForwardRef(Toolbar)) (created by l)
in l (created by t)
in t (created by WithStyles(t))
in WithStyles(t) (created by t)
in t (created by t)
in div (created by ForwardRef(Paper))
in ForwardRef(Paper) (created by WithStyles(ForwardRef(Paper)))
in WithStyles(ForwardRef(Paper)) (created by t)
in t (created by WithStyles(t))
in WithStyles(t) (created by MyComponent)
in div (created by MyComponent)
in MyComponent