You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

defaultProps废弃后,React FC能否仅为部分Props设置默认值?

解决方案:仅为部分Props设置默认值而无需列出所有Props

在React函数组件中,你完全可以只给需要默认值的Props设置默认值,不用把所有Props都写在参数解构里,以下是两种实用方案:

方案一:参数解构时用剩余运算符接收其他Props

直接在参数中解构需要设置默认值的Props,剩下的所有Props用...props统一接收,后续通过props.xxx访问其他属性:

interface AutocompleteInputProps {
    items: any[],
    key: string,
    searchIcon?: boolean,
    clearSearchIcon?: boolean
}

export const AutocompleteInput: React.FC<AutocompleteInputProps> = ({ 
    searchIcon = true, 
    clearSearchIcon = true,
    ...props
}) => {    
    return (
        <>
          {/* 示例使用其他Props */}
          <div>Items count: {props.items.length}</div>
          <div>Key field: {props.key}</div>
          {searchIcon && <span>🔍</span>}
          {clearSearchIcon && <span>❌</span>}
        </>
    )      
}

方案二:函数内部解构需要默认值的Props

参数中只保留完整的props对象,在函数内部仅解构需要设置默认值的属性,其他属性直接通过props访问:

interface AutocompleteInputProps {
    items: any[],
    key: string,
    searchIcon?: boolean,
    clearSearchIcon?: boolean
}

export const AutocompleteInput: React.FC<AutocompleteInputProps> = (props) => {    
    const { searchIcon = true, clearSearchIcon = true } = props;
    
    return (
        <>
          <div>Items count: {props.items.length}</div>
          <div>Key field: {props.key}</div>
          {searchIcon && <span>🔍</span>}
          {clearSearchIcon && <span>❌</span>}
        </>
    )      
}

这两种方案都能避免在参数中列出所有Props,同时保证TypeScript的类型检查正常工作,尤其适合Props数量多或包含继承属性的组件场景。

内容的提问来源于stack exchange,提问作者AbandonedCrypt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 23:07:37