第一个可能会导致一些难以调试的性能问题,尤其是在您使用 redux 时。
如果您正在使用对象或列表或函数,那么这些将是每次渲染时的新对象。如果您有复杂的组件来检查组件身份以查看是否应该进行重新渲染,这可能会很糟糕。
const Component = ({ prop1 = {my:'prop'}, prop2 = ['My Prop'], prop3 = ()=>{} }) => {(
<div>Hello</div>
)}
现在工作正常,但是如果您有更复杂的组件和状态,例如带有数据库连接和/或 react useffect 钩子的 react-redux 连接组件,以及组件状态,这可能会导致大量重新渲染。
通常更好的做法是单独创建默认的props对象,例如。
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>
)