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 документацию по типам опор для получения дополнительной информации.