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 и imumCharacterNumber являются необязательными реквизитами. Я хочу дать им значения по умолчанию, а также я должен проверить их значения опоры. Например; значение по умолчанию для minimalCharacterNumber должно быть равно 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, затем я поставил значения по умолчанию. Я передал эти атрибуты в состояние, затем проверил значения в состоянии. Я использовал значения из состояния. Если вы используете машинопись, вы не должны забывать записывать имена этих атрибутов в интерфейсе состояний вместе с их типами.

1 ответ

Реквизиты по умолчанию назначаются после определения класса или функции:

class AutoCompleteInput extends Component {
    ...
}

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

См. React документацию по типам опор для получения дополнительной информации.

Другие вопросы по тегам