Quindi ho questo modulo in cui un dipendente può aggiungere nome, numero di telefono e shift.
Lo stato del mio modulo è detenuto da employeeFormReducer
. Di default il employeeFormReducer
non ha un valore iniziale o piuttosto ha solo una stringa vuota.
La funzione di selezione data / spostamento data è visivamente impostata su Lunedì, ma questo è solo il comportamento visivo del selezionatore. Non seleziona Lunedì per me è solo l'impostazione predefinita per quel valore.
Non chiamerò mai un creatore di azioni per aggiornare il valore di spostamento all'interno del riduttore in modo da essere lunedì. Quello che sta succedendo.
In realtà non aggiorno mai il riduttore per essere lunedì.
Se cambio il selettore, chiamerà un creatore di azioni, perché quella roba è impostata, ma se un utente apre il modulo e non lo tocca affatto, rimane come una stringa vuota.
C'è più di un modo per risolvere questo problema qui e sono i seguenti quelli di cui sono a conoscenza.
Personalmente non mi sento strongmente a favore di alcuna soluzione, quindi condividerò quella con cui sono andato, ma se ce n'è una che ti suona meglio, per favore condividi.
Quindi, all'interno del riduttore, invece di passare automaticamente alla stringa vuota, potrei semplicemente impostarlo su Lunedì in questo modo:
const INITIAL_STATE = {
name: '',
phone: '',
shift: ‘Monday’
};
Il lato negativo di questo approccio è che associa strettamente le opzioni del raccoglitore a questo riduttore. Quindi se per qualche motivo cambio le opzioni di selezione in ore del giorno invece che in giorni, devo aggiornarlo sia nel modulo di selezione che nel riduttore.
Non vado in quel percorso lascerò il turno come stringa vuota:
const INITIAL_STATE = {
name: '',
phone: '',
shift: ‘’
};
La seconda opzione consiste nell'aggiungere un metodo del ciclo di vita componentWillMount()
all'interno del modulo EmployeeCreate
e non appena questo componente viene montato su un dispositivo, non appena viene eseguito il rendering posso chiamare manualmente l'action creator e impostare il valore predefinito valore del passaggio a qualsiasi cosa vogliamo che sia.
L'opzione finale e quella con cui andrò avanti è se chiamo l'action creator employeeCreate
Posso impostare il valore di shift in modo predefinito:
class EmployeeCreate extends Component {
onButtonPress() {
const { name, phone, shift } = this.props;
this.props.employeeCreate({ name, phone, shift: shift || ‘Monday’ });
}
Sono arbitrariamente andato con questo nell'interesse del tempo.
Quindi per il tasto Maiusc utilizzare il turno impostato dal modulo o se non si imposta un valore predefinito su Lunedì.
Devo essere consapevole del fatto che sto sfruttando una soluzione alternativa in JavaScript. Sto contando sul fatto che il riduttore produce shift come una stringa vuota di default che è un valore di falsa in JavaScript.
Qualcuno ha una soluzione migliore?