第一个可能导致一些难以调试的性能问题,尤其是在使用redux的情况下。
如果使用对象,列表或函数,则这些对象将成为每个渲染上的新对象。如果您有复杂的组件来检查组件的完整性以查看是否应进行重新渲染,那么这可能很不好。
const Component = ({ prop1 = {my:'prop'}, prop2 = ['My Prop'], prop3 = ()=>{} }) => {(
<div>Hello</div>
)}
现在可以正常工作,但是如果您具有更复杂的组件和状态,例如带有数据库连接和/或react useffect挂钩的react-redux连接的组件以及组件状态,则可能导致大量重新发布。
通常更好的做法是分别创建默认的prop对象,例如。
const Component = ({prop1, prop2, prop3 }) => (
<div>Hello</div>
)
Component.defaultProps = {
prop1: {my:'prop'},
prop2: ['My Prop'],
prop3: ()=>{}
}
要么
const defaultProps = {
prop1: {my:'prop'},
prop2: ['My Prop'],
prop3: ()=>{}
}
const Component = ({
prop1 = defaultProps.prop1,
prop2 = defaultProps.prop2
prop3 = defaultProps.prop3
}) => (
<div>Hello</div>
)