J'ai une fonction que j'utilise dans plusieurs composants. Il recueille des données des composants et le stocke dans dB. Mon problème est que la fonction a beaucoup d'arguments et certains d'entre eux peuvent ne pas être utilisés dans certains composants. Jetez un coup d'œil:
export default async function addUserLogs(account, service, terminal,isSaved,isSentToGateway,amount ) {
const obj = {
serviceID: service,
terminalID: terminal,
amountName: account,
amount: amount,
isSaved: isSaved,
isSentToGateway: isSentToGateway,
};
const db = await InitDb();
const tx = db.transaction('userLogs', 'readwrite');
const store = tx.objectStore('userLogs');
const index = await store.put(obj);
let params = {};
if (window.localStorage.getItem('params') !== null) {
params = JSON.parse(window.localStorage.getItem('params'));
}
window.localStorage.setItem(
'params',
JSON.stringify({ ...params, userLogIndex: index })
);
}
3 Réponses :
Pour obtenir la conduite de cela et rendre votre fonction plus générique, vous devez fournir des arguments par défaut à la fonction de sorte que lorsque vous ne transmettez aucune création d'origine ici
export default async function addUserLogs(account="default", service = "default", terminal = "default value",isSaved = "default value",isSentToGateway = "default value",amount = "default Value" )
Dans cet exemple, vous pouvez définir NULL pour certains arguments qui ne sont pas nécessaires et que vous ne voulez pas les utiliser lorsque vous pouvez utiliser votre fonction.
Vous pouvez utiliser des filtres pour vos arguments comme: P> < Pré> xxx pré> p>
Adduserlogs peut recevoir un objet avec des touches optionnelles et fusionner le dernier objet reçu avec le nouveau:
export default async function addUserLogs({amountName, serviceID, terminalID, isSaved ,isSentToGateway, amount}) {
const lastParams = <get the last params from storage>;
const newParams = {
amountName: amountName || lastParams.amountName,
serviceID: serviceID || lastParams.serviceID,
terminalID: terminalID || lastParams.terminalID,
isSaved: isSaved === undefined ? lastParams.isSaved : isSaved,
isSentToGateway: isSentToGateway === undefined ? lastParams.isSentToGateway : isSentToGateway,
amount: amount === undefined ? lastParams.amount : amount
};
...
}
Dans JS Arguments sont facultatifs, il n'y a donc rien que vous devez faire sauf faire une condition dans votre fonction
si (arg1) {faire quelque chose} code> etc.Parce que vous y accédez lors de la création du
obj code> et n'a pas passé cela, c'est pourquoi vous obtenez l'erreur. Vous devez faire celles qui ne sont pas obligatoires ont des valeurs par défaut afin que lorsque vous ne leur fournissez pas, il n'y aura aucun problèmeJe pense que vous devriez vous référer - Stackoverflow.com/Questtions/894860/...
Je pense que vous devriez vous référer - Stackoverflow.com/Questtions/894860/...