Nella mia app React Native, ho una situazione in cui un particolare figlio di un componente che I render
dovrebbe ricevere uno borderColor
verde o rosso.Errore durante la creazione di un nuovo oggetto da quello esistente usando `...`: In questo ambiente le fonti per assegnare DEVONO essere un oggetto
Ora, non voglio creare due voci separate nel mio styles
per queste due situazioni poiché differiscono solo nella proprietà borderColor
.
La mia idea era quella di ricavare l'oggetto proprio stile da quelle che ho nella mia styles
in questo modo:
const styles = StyleSheet.create({
amountSection: {
borderWidth: 1,
flex: 1,
flexDirection: 'row',
borderRadius: 3
}
})
render() {
const amountBorderColor = this.state.isClaim ? 'green' : 'red'
const amountStyles = {
...styles.amountSection,
borderColor: amountBorderColor
}
return (
// ... apply amountStyles at appropriate component
)
}
Tuttavia, questo codice dà il seguente errore:
Unhandled JS Exception: In this environment the sources for assign MUST be an object.This error is a performance optimization and not spec compliant.
A quanto pare il errore viene colpito sulla riga dove definisco amountStyles
. Qualcuno sa perché questo succede? C'è qualcosa di sbagliato nella mia sintassi? Sto usando la notazione ...
per creare un nuovo oggetto da uno esistente e aggiungervi alcune proprietà aggiuntive.
Cosa significa 'styles' assomigliare? Penso che questo errore si verifichi perché 'styles.amountSection' non è definito, probabilmente nascosto dalla fabbrica' Stylesheet.create'. – PitaJ
'styles' è mostrato nel codice sopra, o cosa intendi? :) Ho omesso le parti che non sono rilevanti per il mio problema corrente, ma sicuramente 'styles.amountSection' è definito come può essere visto nel codice di esempio – nburk
Sei sicuro? La funzione 'stylesheet.create' restituisce un oggetto con una proprietà' amountSection'? Sto pensando che non muore, e questo è il tuo problema. – PitaJ