Erstens kann es zu schwer zu debuggenden Leistungsproblemen kommen, insbesondere wenn Sie Redux verwenden.
Wenn Sie Objekte, Listen oder Funktionen verwenden, sind dies bei jedem Rendern neue Objekte. Dies kann schlecht sein, wenn Sie komplexe Komponenten haben, die die Komponentenidentität überprüfen, um festzustellen, ob ein erneutes Rendern durchgeführt werden sollte.
const Component = ({ prop1 = {my:'prop'}, prop2 = ['My Prop'], prop3 = ()=>{} }) => {(
<div>Hello</div>
)}
Das funktioniert jetzt einwandfrei. Wenn Sie jedoch komplexere Komponenten und Zustände haben, z. B. mit React-Redux verbundene Komponenten mit Datenbankverbindung und / oder React Useffect-Hooks und Komponentenstatus, kann dies zu erheblichen Wiederholungen führen.
Es ist im Allgemeinen besser, Standard-Requisitenobjekte separat erstellen zu lassen, z.
const Component = ({prop1, prop2, prop3 }) => (
<div>Hello</div>
)
Component.defaultProps = {
prop1: {my:'prop'},
prop2: ['My Prop'],
prop3: ()=>{}
}
oder
const defaultProps = {
prop1: {my:'prop'},
prop2: ['My Prop'],
prop3: ()=>{}
}
const Component = ({
prop1 = defaultProps.prop1,
prop2 = defaultProps.prop2
prop3 = defaultProps.prop3
}) => (
<div>Hello</div>
)