Передача Dispatch некомпоненту, который устанавливает столбцы ReactTable? - PullRequest
0 голосов
/ 20 октября 2018

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

1 Ответ

0 голосов
/ 20 октября 2018

Вы можете передать 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.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...