Реагировать / Реагировать-Родные ссылки
Я пытаюсь дать своему пользовательскому компоненту возможность использовать ref, но я не уверен, как это сделать, что будет лучшим способом сделать это?
Например, у меня есть мой компонент: <InputField ref="email" />
Если я сделаю console.log
внутри класса InputField я получаю пустой refs={}
<View style={ styles.wrapItems }>
<TouchableOpacity onPress={() => this.emailInput.onError() }>
<Text>Show Error</Text></TouchableOpacity>
<InputField ref={(ref) => this.emailInput } alignItems={'center'} placeholder="Your Email" />
<InputField ref={(ref) => this.passwordInput } secureTextEntry={true} placeholder="Your Password" />
</View>
Внутри моего компонента
export default class InputField extends Component {
constructor(props) {
super(props);
}
static onError() {
alert('On Error');
}
return (
<View style={ styles.inputWr }>
<TextInput
ref={??}
style={ [styles.input, textDir, textColor] }
onChangeText={this.onChangeText}
keyboardType={keyboardType}
underlineColorAndroid={'rgba(0,0,0,0)'}
onFocus={this.onFloatLabel}
secureTextEntry={secureTextEntry}
value={this.state.text}
onBlur={this.onFloatLabel} />
2 ответа
Вам нужно назначить параметр ref для this.emailInput
<InputField ref={ref => this.emailInput = ref} alignItems={'center'} placeholder="Your Email" />
Но будьте осторожны, используя ссылки, обычно это не очень хороший подход (иногда обратные вызовы реквизита делают свою работу).
Решение по ОП.
Я изменил статическую функцию на нестатическую, и это сработало.
От:
static onError() {
Для того, чтобы:
onError() {