如何在使用redux格式按下下一个键盘按钮后如何使用useRef钩子来选择下一个TextInput

问题描述 投票:2回答:2

我知道我们可以使用react类方法轻松完成此操作。因为我们有this.ref。但我不确定如何使用功能组件中的useRef挂钩执行此操作。

使用写在here上的技巧”>

这就是我试图这样做的方式。

  ...

  const inputEl1 = useRef(null);
  const inputEl2 = useRef(null);
  return (
        <Field
            name="first_name"
            component={MyTextInput}
            placeholder="First name"
            ref={inputEl1}
            refField={inputEl1}
            onEnter={() => {
              inputEl2.current.focus();
            }}
          />
          />
          <Field
            name="last_name"
            placeholder="Last name"
            component={MyTextInput}
            ref={inputEl2}
            refField={inputEl2}
          />
)
...

所以我需要将ref从字段传递到MyTextInput,并在nextKeyPress上我要关注第二个输入组件,即inputEl2

//我的文字输入

...
render() {
    const {
      input: { value, onChange, onBlur },
      meta: { touched, error },
      keyboardType,
      placeholder,
      secureTextEntry,
      editable,
      selectTextOnFocus,
      style,
      selectable,
      customValue,
      underlineColorAndroid,
      autoFocus,
      maxLength,
      returnKeyType,
      onEnter,
      refField,
    } = this.props;
    const { passwordVisibility, undelineColor } = this.state;

    return (
      <View style={{ marginVertical: 8 }}>
        <TextInput
          style={[{
            height: 50,
            paddingLeft: 20,
            color: Colors.SECONDARY_COMMON,
          }, style]}
          onBlur={val => onBlur(val)}
          keyboardType={keyboardType}
          underlineColorAndroid={undelineColor}
          placeholder={placeholder}
          returnKeyType={returnKeyType || 'go'}
          value={customValue || value.toString()}
          onChangeText={onChange}
          maxLength={maxLength}
          onSubmitEditing={onEnter}
          ref={refField}
        />
)
}

我知道我们可以使用react类方法轻松完成此操作。因为我们有this.ref。但是我不确定如何使用功能组件中的useRef挂钩来执行此操作。使用这里写的技巧这就是我的样子...

reactjs react-native redux-form textinput react-hooks
2个回答
0
投票

[如果孩子需要使用像<TextInput ref={refField}...中的ref这样的道具,则该道具需要是ref(不是字符串):


0
投票
const inputEl2 = useRef(null);
<TextInput
        name="first_name"           
        placeholder="First name"
        onSubmitEditing={() => inputEl2.current.focus()}
      />

<TextInput
        name="last_name"
        placeholder="Last name"
        ref={inputEl2}
      />
© www.soinside.com 2019 - 2024. All rights reserved.