2017-02-21 2 views
1

J'ai un formulaire qui demande à l'utilisateur d'entrer quelques chiffres. Ensuite, certains calculs sont effectués en utilisant les numéros qui sont stockés dans un magasin Redux. Pour l'instant, je ne stocke pas les calculs dans le magasin Redux, mais je les fais dans la fonction de rendu de mon composant.Les calculs doivent-ils être stockés dans le magasin Redux s'ils doivent être soumis dans une demande?

Maintenant, j'ai besoin du formulaire soumis pour inclure ces valeurs calculées dans ma requête HTTP. Comment dois-je y aller? Devrais-je faire en sorte que le magasin Redux tienne les calculs?

Répondre

2

Si vous envisagez d'utiliser les valeurs brutes ainsi que les valeurs calculées dans votre interface utilisateur, je vois un avantage à conserver les deux à l'intérieur de votre magasin de redux. Si vous avez uniquement besoin d'utiliser le calcul lorsque vous effectuez la requête HTTP et que les données calculées ne sont pas utilisées dans le cadre de l'interface utilisateur, une implémentation plus simple consiste à séparer la fonction qui effectue le calcul dans un utilitaire fichier, et l'importation et l'utilisation de la fonction dans le composant/conteneur ou le fichier d'actions que le calcul est nécessaire.

Je pense que cela créerait une séparation plus claire des préoccupations dans chaque fichier, et l'utilitaire de calcul pourrait être utilisé dans plusieurs fichiers si nécessaire.

// Utility file 
export const calculationFunction = (someParam) => { 
    \\ Calculation here 
    return yourAnswer 
} 

puis

// Actions File (Note this is how my action dispatch is set up, yours might look a bit different 
import { calculationFunction } from 'utilities/calculations'; 

export const sendData = (data) => ({ 
    type: types.SEND_DATA, 
    responseTypes: [types.SEND_DATA_SUCCESS, types.SEND_DATA_FAILURE], 
    promise: (client: any) => client.post('/data', calculationFunction(data)), 
});