Я бы сказал, что это во многом зависит от конкретного случая использования, например, как часто эти значения (то есть входные данные для вычисления функции) могут меняться (это что-то вроде корзины или больше похоже на сгенерированный отчет, когда вы извлекаете данные один раз и все) и если это только один расчет на представление или несколько из них с различными входными данными (например, вам нужно рассчитать плату за каждую строку в таблице).
Прежде всего, вычисление должно быть отдельной функцией, которая получает все необходимые данные в качестве аргументов (таким образом, вы также можете легко их модульно протестировать) и не заботится, используется ли она в приложении React или вы используете Redux или что-то еще. Если вы думаете, что он будет вызываться несколько раз с одними и теми же аргументами, вы могли бы также прочитать концепцию, называемую «запоминание», но я думаю, что в большинстве случаев запоминание должно происходить вне этой функции.
Теперь, при условии, что у вас уже есть остальные данные (упомянутый вами consultingFee
заполнитель) в вашем магазине, и вы хотите получить вычисленное значение после получения ответа от вашего бэкэнда. В этом случае вы можете извлечь значения из хранилища, как показано в ответе bsapaka, и поместить вычисленное значение в избыточное хранилище, к которому вы обращаетесь, где вам это нужно. Этого достаточно, если вы сделаете запрос один раз, отобразите вычисленное значение и все, вы знаете, что если вам нужно будет снова вычислить его, у вас будут разные входные значения и вам придется снова вызывать backend, и вам не нужно кэшировать результат, хотя я бы сказал, что в этом случае вам не следует хранить рассчитанное значение в вашем магазине.
Вы также можете использовать селектор дальше в функции mapStateToProps, для этого будет полезна повторная выборка библиотеки (обязательно прочитайте раздел «Совместное использование селекторов с реквизитами в нескольких компонентах» README). Таким образом, у вас есть компонент, который отправляет действие, которое получает необходимые данные из серверной части и помещает их в хранилище избыточных данных. В mapStateToProps вы используете запомненный селектор, который собирает все необходимые данные и вычисляет результат, который не будет пересчитан, пока не изменится ввод (в данном случае релевантные значения из избыточного хранилища). Я бы предпочел этот подход, так как он уменьшает побочные эффекты в Redux и кажется мне более декларативным, но я также предпочитаю использовать RedEx в качестве своего рода кеша с необработанными значениями, и если мне нужно извлечь из него значения, я использую запомненные селекторы.