Таблица материалов с React: как использовать рейтинг в ячейке? - PullRequest
1 голос
/ 13 июля 2020

Я хотел бы присвоить рейтинг моей ячейки звездочке, используя Material-Table, как и в исходном Material-UI: https://material-ui.com/components/rating/

Можно ли использовать в Material- Стол? Я не могу найти документ, связанный с этим ... только для стиля фона, цвета и т. Д. c., А не для написания функций в стиле ячейки. https://material-table.com/# / docs / features / styling

большое спасибо!

1 Ответ

1 голос
/ 13 июля 2020

Вы можете использовать компонент пользовательского редактирования material-table для рендеринга компонента mui Rating.

Полная рабочая демонстрация

Edit Material-Table: show rating

Sample code snippet of columns array

const columns = propValue => [
  { title: "Id", field: "id" },
  { title: "First Name", field: "first_name" },
  {
    title: "Rating",
    field: "rating",
    render: rowData => {
      return <Rating name="hover-feedback" value={rowData.rating} readOnly />;
    },
    editComponent: props => (
      <Rating
        name="hover-feedback"
        value={props.value}
        onChange={(event, newValue) => {
          props.onChange(newValue);
        }}
      />
    ),
    cellStyle: {
      backgroundColor: "#039be5",
      color: "#FFF"
    },
    width: "30%"
  }
];

Компонент

class App extends Component {
  tableRef = React.createRef();
  propValue = true;
  state = { data: [] };

  componentDidMount() {
    const query = 0;

    let url = "https://reqres.in/api/users?";
    url += "per_page=" + query.pageSize;
    url += "&page=" + (query.page + 1);
    fetch(url)
      .then(response => response.json())
      .then(result => {
        console.log("result", result);
        this.setState({
          data: result.data.map(d => ({ ...d }))
        });
      });
  }
  render() {
    return (
      <div style={{ maxWidth: "100%" }}>
        <MaterialTable
        icons={tableIcons}
          tableRef={this.tableRef}
          columns={columns(this.propValue)}
          editable={{
            onRowUpdate: (newData, oldData) =>
              new Promise((resolve, reject) => {
                console.log("newData", newData);
                console.log("oldData", oldData);
                const dataUpdate = [...this.state.data];
                const index = oldData.tableData.id;
                dataUpdate[index] = newData;
                this.setState({ data: dataUpdate }, () => {
                  console.log("xx", this.state.data);
                  resolve(this.state);
                });
              })
          }}
          data={this.state.data}
          title="Remote Data Example"
          options={{ tableLayout: "fixed" }}
        />
        <button
          onClick={() => {
            this.tableRef.current.onQueryChange();
          }}
        >
          ok
        </button>
      </div>
    );
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...