Permettre de gérer les options proposées dans un DAD #19

Manually merged
tcornaut merged 6 commits from feature/options into develop 2020-08-31 15:32:40 +02:00
1 changed files with 6 additions and 6 deletions
Showing only changes of commit 952b1b6a8d - Show all commits

View File

@ -51,23 +51,23 @@ export const OptionsSection: FunctionComponent<OptionsSectionProps> = ({ dsf, up
} }
const onAddOptionClick = (evt: MouseEvent) => { const onAddOptionClick = (evt: MouseEvent) => {
var options = JSON.parse(JSON.stringify(state.section.options)) const options = JSON.parse(JSON.stringify(state.section.options))
Review

JSON.parse(JSON.stringify(state.section.options)) est utilisé ici pour faire une copie ?

Pourquoi ne pas plutôt faire const options = [ ...state.section.options ]; ? Cette méthode est plus performante qu'une sérialisation/dé-sérialisation JSON du tableau.

`JSON.parse(JSON.stringify(state.section.options))` est utilisé ici pour faire une copie ? Pourquoi ne pas plutôt faire `const options = [ ...state.section.options ];` ? Cette méthode est plus performante qu'une sérialisation/dé-sérialisation JSON du tableau.
Review

Malheureusement la méthode de copie que tu cites ne lève pas l'interdiction d'écrire dans options, je n'ai pas trouvé d'autre méthode que JSON.parse(JSON.stringify(state.section.options)) pour en faire une copie modifiable.

Malheureusement la méthode de copie que tu cites ne lève pas l'interdiction d'écrire dans options, je n'ai pas trouvé d'autre méthode que JSON.parse(JSON.stringify(state.section.options)) pour en faire une copie modifiable.
var option = newOption("Décision", "", ""); const option = newOption("Décision", "", "");
Review

Si il n'y aura pas d'assignation de nouvelle valeur à la variable, préférer const à var pour identifier assez vite les erreurs liées à l'écrasement de valeurs "constantes".

Si il n'y aura pas d'assignation de nouvelle valeur à la variable, préférer `const` à `var` pour identifier assez vite les erreurs liées à l'écrasement de valeurs "constantes".
options.push(option); options.push(option);
setState(state => ({ ...state, changed: true, section: { ...state.section, options }})); setState(state => ({ ...state, changed: true, section: { ...state.section, options }}));
}; };
const onOptionChange = (id: string, attrName: string, evt: ChangeEvent<HTMLInputElement>) => { const onOptionChange = (id: number, attrName: string, evt: ChangeEvent<HTMLInputElement>) => {
const target = evt.currentTarget; const target = evt.currentTarget;
const value = target.hasOwnProperty('checked') ? target.checked : target.value; const value = target.hasOwnProperty('checked') ? target.checked : target.value;
var options = JSON.parse(JSON.stringify(state.section.options)) const options = JSON.parse(JSON.stringify(state.section.options))
Review

Idem qu'un peu plus haut.

Idem qu'un peu plus haut.
options[id][attrName] = value; options[id][attrName] = value;
setState(state => ({ ...state, changed: true, section: { ...state.section, options }})); setState(state => ({ ...state, changed: true, section: { ...state.section, options }}));
}; };
const onRemoveOptionClick = (id: string, evt: MouseEvent) => { const onRemoveOptionClick = (id: number, evt: MouseEvent) => {
if(confirm('Voulez-vous supprimer cette option ?')){ if(confirm('Voulez-vous supprimer cette option ?')){
var options = JSON.parse(JSON.stringify(state.section.options)) const options = JSON.parse(JSON.stringify(state.section.options))
Review

Idem, const semble préférable à var ici.

Idem, `const` semble préférable à `var` ici.
options.splice(id, 1); options.splice(id, 1);
setState(state => ({ ...state, changed: true, section: { ...state.section, options }})); setState(state => ({ ...state, changed: true, section: { ...state.section, options }}));
} }