невозможно получить доступ к компоненту с ссылкой

Почему this.workmin.value не определено?

captureInput=(text)=>{
    console.log('captureinput',this.refs.workmin.value)
  }

  render() {
    console.log('RENDER',this.state)


    return (
      <View style={styles.container}>
        <Text style={styles.bigFont}>{`${this.state.timer + 'TIMER'}`}</Text>
        <Text style={styles.bigFont}>{`${this.state.min + ':' + this.state.sec}`}</Text>
        <View style={styles.button}>
          <Button title='START' onPress={()=>this.startToggle()} />
          <Button title='RESET' onPress={()=>this.resetToggle()} />
        </View>
             <View style={styles.row}>
                <Text style={[styles.bold,{marginRight:10},{width:112},
                            {textAlign:'right'}]}>
                            Work Timer:</Text>
                <Text style={styles.bold}> min:</Text>
                <TextInput
                   
                   value={Math.floor(this.state.workTime / 60).toString()}
                   ref= {(ref)=>{this.workmin=ref}}
                   style={styles.input}
                   onChangeText={(text) => {this.captureInput(text)}}

                />
      </View>
    )
  }


person DCR    schedule 29.04.2018    source источник


Ответы (1)


refs устарел, сделайте это вместо этого:

<TextInput
  ref={(ref) => {
    this.workmin = ref;
  }}
/>

Затем вы можете использовать его как this.workmin.focus().

person Roy Wang    schedule 29.04.2018
comment
как мне получить значение поля ввода? - person DCR; 29.04.2018
comment
Вы хотите получить значение в onSubmitEditing? Сохраните обновленный текст из onChangeText в состоянии: onChangeText={text => setState({ text })}, затем прочитайте из this.state.text. - person Roy Wang; 29.04.2018
comment
Я пытаюсь определить, какое поле ввода используется. Я думал, что смогу определить, какое поле через ссылку - person DCR; 29.04.2018
comment
Не используйте для этого ref, просто вызывайте разные обработчики? См. мой ответ на stackoverflow.com/ вопросы/50090054/ - person Roy Wang; 29.04.2018
comment
это не кажется лучшим ответом. Если у вас есть 10 полей ввода, вы действительно хотите дублировать 10 обработчиков? - person DCR; 29.04.2018
comment
Вы можете использовать анонимную стрелочную функцию вместо явного объявления обработчика. Как правило, в любом случае они должны быть однострочными (другой ключ в setState?). Если входы вместе, возможно, вам нужен map. Может быть, вы можете проиллюстрировать пример, чтобы показать, почему это проблематично? - person Roy Wang; 29.04.2018
comment
Давайте продолжим обсуждение в чате. - person DCR; 29.04.2018