我正在尝试为自定义组件提供使用ref的选项,但我不知道该怎么做,最好的方法是什么?
例如,我有我的组件:<InputField ref="email" />
如果我在InputField类中执行console.log
,我会得到一个空的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} />
答案 0 :(得分:1)
您需要将参考参数分配给 this.emailInput
<InputField ref={ref => this.emailInput = ref} alignItems={'center'} placeholder="Your Email" />
但要注意使用 refs ,通常这不是一个好方法(有时道具回调可以完成这项工作)。
答案 1 :(得分:0)
OP解决方案。
我将静态功能更改为非静态功能,并且可以正常工作。
发件人:
static onError() {
收件人:
onError() {