2017-08-21 100 views
0

我正在製作一個自動完成組件,它可以進行實時搜索。這些是它的道具:React Native有條件地接受道具

    <AutoCompleteInput 
         ref={autocomplete.tag} 
         tag={autocomplete.tag} 
         type={autocomplete.type} 
         title={autocomplete.title} 
         required={autocomplete.required} 
         photoRequired={autocomplete.photoRequired} 
         defaultValue={autocomplete.defaultValue} 
         options={autocomplete.options} 
         titleKey={autocomplete.titleKey} 
         valueKey={autocomplete.valueKey} 
         singleSelection={false} 
         maxSuggestionNumber={50} 
         minimumCharacterNumber={-2} 

        /> 

singleSelection,maxSuggestionNumber和minimumCharacterNumber是可選的道具。我想給他們默認值,我也應該檢查他們的道具值。例如; minimumCharacterNumber的默認值應該是'0',所以如果我們不使用該道具,'0'值應該傳入組件。但是,如果該值低於0,則組件應使用默認值'0'。 我試過功能 public static defaultProps() { ...... },但我很困惑,並且無法處理它的條件。 它的普通技術是什麼?任何解決方案都將受到重視。

編輯:我解決了我的問題,我想分享。

public static defaultProps = { 
    minimumCharacterNumber: 0, 
    maxSuggestionNumber: 50, 
    singleSelection: false, 
} 

constructor(props: ACModalProps) { 
    super(props) 
    this.state = { 
     maxSuggestionNumber: 
     this.props.maxSuggestionNumber && this.props.maxSuggestionNumber > 0 
      ? this.props.maxSuggestionNumber 
      : ACModal.defaultProps.maxSuggestionNumber, 

     minimumCharacterNumber: 
     this.props.minimumCharacterNumber && this.props.minimumCharacterNumber > 0 
      ? this.props.minimumCharacterNumber 
      : ACModal.defaultProps.minimumCharacterNumber, 
     singleSelection: this.props.singleSelection 
      ? this.props.singleSelection 
      : ACModal.defaultProps.singleSelection, 


       . 
       . 
       . 

我創建了公共靜態defaultProps,然後我把默認值。我將這些屬性傳遞給狀態,然後檢查狀態中的值。我使用了來自狀態的值。如果你使用打字稿,你不應該忘記在他們的proptypes狀態界面中寫這些屬性的名字。

回答

0

默認道具類或函數定義後分配:

class AutoCompleteInput extends Component { 
    ... 
} 

AutoCompleteInput.defaultProps = { 
    title: 'Hello World' 
} 

見陣營documentation on prop types以獲取更多信息。

相關問題