Передача Dispatch некомпоненту, который устанавливает столбцы ReactTable?

Я использую React Redux и Thunk для своего внешнего интерфейса. Я использовал ReactTable для рендеринга табличных представлений. ReactTable принимает столбцы и данные в качестве реквизита. Так как у меня есть данные, поступающие с сервера GraphQL, я должен позвонить для получения данных. Итак, у меня есть действие, которое получает данные с сервера, и я делаю отложенную отправку для этого действия, используя thunk. Теперь проблема в том, что мои заголовки и данные таблицы поступают из моего действия, которое находится в отдельном файле, отличном от компонента, и я хочу получить доступ к диспетчеризации прямо в моем заголовке, потому что я создал пользовательские ячейки, где у меня есть значки для удаления строк таблицы и Я хочу отправить действие getData после удаления любого элемента, чтобы моя таблица обновлялась. Как я могу получить доступ к отправке в некомпонентном файле, где я не могу вызвать connect?

1 ответ

Решение

Вы можете пройти вниз fetchTableData к <Table> и к <Header /> компоненты. например

<TableContainer />

const mapStateToProps = (state) => ({
    hasError: hasError(state),
    isLoading: isLoading(state),
    tableData: getTableData(state),
});

const mapDispatchToProps = {
  fetchTableData,
};

export default connect(
    mapStateToProps,
    mapDispatchToProps
)(Table);

<Table />

export default class Table extends Component {
    componentDidMount() {
        // fetches table and header data for the first time when Table mounts
        this.fetchTableData();
    }
    render() {
        return (
          <div>
            // passes the fetchTableData function to Header so it can 
            // refetch the data when something is deleted
            <Header fetchTableData={props. fetchTableData}/>
            <Body />
          </div>
        );
    }
}

Вы также можете рассмотреть:

  1. соединительный <Header /> указать также и настроить его на действия по отправке.
  2. Не перезагружать все данные из API при удалении. Если удаление прошло успешно, просто отправьте действие, чтобы удалить удаленную строку из состояния Redux.
Другие вопросы по тегам