React / React-Native Refs

时间:2016-11-11 15:24:12

标签: reactjs react-native components ref

我正在尝试为自定义组件提供使用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} />

2 个答案:

答案 0 :(得分:1)

您需要将参考参数分配给 this.emailInput

<InputField ref={ref => this.emailInput = ref} alignItems={'center'} placeholder="Your Email" />

但要注意使用 refs ,通常这不是一个好方法(有时道具回调可以完成这项工作)。

答案 1 :(得分:0)

OP解决方案。

我将静态功能更改为非静态功能,并且可以正常工作。

发件人:

static onError() {

收件人:

onError() {