Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.
25 λεπτά πριν, Predatorkill είπε

Το redux ειναι μανουρα να το καταλαβεις στην αρχη, αλλα μολις καταλαβεις τι γινεται το πας αερα. Βεβαια εχει αρκετο boilerplate, στο στησιμο τουλαχιστον.

Οι juniors στο γραφειο χανοντουσαν στην αρχη αλλα μολις τους εξηγησα το flow δεν ειχαν θεματα. 

Αν θες τη γνωμη μου, ξεχνα τα destructure και spread του state και παιξε μπαλα ή με immer ή immutability helper. Χωρις αυτα οι reducers θα ειναι σα christmas tree και δυσνοητοι.

Το immer φαίνεται πολύ καλό! Δεν το χα πετύχει.

Συμφωνώ για τα spread και destructure, αλλά όχι για τους λόγους αναγνωσιμότητας που αναφέρεις αλλά για τον λόγο ότι κάνουν `shallow copy` τα οbjects και τα array.

Για παράδειγμα:

const originalState = {
  user: {
    name: 'kostas',
  },
};

const newState = { ...originalState };
newState.user.name = 'Basilis';

console.warn(originalState.user.name);
// Basilis

Νομίζεις ότι έχεις καινούργιο object αλλά ο user κάνει reference στο αρχικό object.

Η εναλλακτική που χρησιμοποιώ εγώ είναι η χρήση της cloneDeep από lodash.

import { cloneDeep } from 'lodash';

const originalState = {
  user: {
    name: 'kostas',
  },
};

const newState = cloneDeep(originalState);
newState.user.name = 'Basilis';

console.warn(originalState.user.name);
// kostas

 

Δημοσ. (επεξεργασμένο)
27 λεπτά πριν, ktf είπε

Το immer φαίνεται πολύ καλό! Δεν το χα πετύχει.

Συμφωνώ για τα spread και destructure, αλλά όχι για τους λόγους αναγνωσιμότητας που αναφέρεις αλλά για τον λόγο ότι κάνουν `shallow copy` τα οbjects και τα array.

Για παράδειγμα:


const originalState = {
  user: {
    name: 'kostas',
  },
};

const newState = { ...originalState };
newState.user.name = 'Basilis';

console.warn(originalState.user.name);
// Basilis

Νομίζεις ότι έχεις καινούργιο object αλλά ο user κάνει reference στο αρχικό object.

Η εναλλακτική που χρησιμοποιώ εγώ είναι η χρήση της cloneDeep από lodash.


import { cloneDeep } from 'lodash';

const originalState = {
  user: {
    name: 'kostas',
  },
};

const newState = cloneDeep(originalState);
newState.user.name = 'Basilis';

console.warn(originalState.user.name);
// kostas

Σωστος, προτιμω immutability helper καθως κραταει την object «μορφη» οπτικα, επισης σπαει μπαλες με τα arrays το immer ενω με helper κανεις οτι θελεις πολυ ευκολα πανω τους.

Επεξ/σία από Predatorkill

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...