React Native有条件地接受道具

时间:2017-08-21 14:52:14

标签: react-native reactjs-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是可选的道具。我想给它们提供默认值,我也应该检查它们的prop值。例如; minimumCharacterNumber的默认值应为&#39; 0&#39;,所以如果我们不使用该道具,&#39; 0&#39; 0值应该传递给组件。但是,如果该值低于0,则组件应使用默认值&#39; 0&#39;。 我试过这个功能 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,然后我把默认值。我将这些属性传递给state,然后检查状态中的值。我使用了州的价值观。如果你使用打字稿,你不应该忘记写这些属性&#39;国家与他们的proptypes接口的名称。

1 个答案:

答案 0 :(得分:0)

在类或函数定义之后分配默认道具:

class AutoCompleteInput extends Component {
    ...
}

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

有关详细信息,请参阅React documentation on prop types