У меня есть приложение React, использующее Redux.
Приложение отображает результаты некоторых вычислений вверху, а некоторые составляющие этих вычислений - внизу. Пользователь может щелкнуть кнопку, которая открывает модальное окно, в котором пользователь может добавить одну из этих составляющих. Это запустит действие, во время которого он отправит эту новую составляющую в бэкэнд, что приведет к тому, что эти вычисления будут иметь разные результаты.
Как и следовало ожидать, я хочу обновить эти результаты с сервера на основе новых данных. Расчеты довольно сложны, поэтому повторение расчета в пользовательском интерфейсе не вариант.
Существует метод loadConstituents()
, который вызывается componentWillMount()
, когда пользователь попадает на страницу. Мне в основном нужно вызвать этот метод снова, как только сервер подтвердит пользователю, что данные были получены (с помощью действия SAVE_SUCCESS
).
Как я могу перехватить действие в моем компоненте?
В качестве альтернативы, есть ли лучший способ достижения этого?
Лучшее, что я мог придумать, - это передать функцию loadConstituents()
в модальное окно, которое передаст ее вызову, который выполнит ее после завершения вызова, но передача функции через такое количество классов, как параметр, кажется очень хакерским.
Примечание: согласитесь с @oosniss, вам понадобится промежуточное ПО (thunk, saga и т. д.). Также выполните асинхронные вызовы в componentDidMount (). Дайте мне знать, если вам понадобится помощь с thunk.
Если вы хотите использовать redux-thunk, как прокомментировали два других. Вот хороший ответ: stackoverflow.com/a/35073808/10301134
Используйте thunk. Просто добавьте с помощью npm i --save redux-thunk
и примените его как промежуточное ПО, которое будет «перехватывать» ваши действия при отправке, а затем
@Dupocas npm теперь сохраняет автоматически, кстати
Не знаю, почему люди не используют сагу. Это намного мощнее, чем thunk
по привычке xD
Не знаю, почему люди не водят танки. Они намного мощнее автомобилей.
вам может понадобиться промежуточное ПО, такое как redux-saga