React Native 中的 Next Input 使用功能组件和组件 Input

Next Input in React Native using functional component and component Input

我尝试实现下一个输入,用户点击输入以响应本机,但我不知道我能做什么

我在我的组件文件中创建了一个组件输入:

class Input extends React.Component {
constructor() {
    super();

    this.state = {
        hidePassword: true
    }
}

setPasswordVisibility = () => {
    this.setState({ hidePassword: !this.state.hidePassword })
}

render() {
    return (
        <>
            <TextInput
                placeholder={this.props.placeholder ? this.props.placeholder : ''}
                selectionColor='#BA90B7'
                keyboardType={this.props.keyboard ? this.props.keyboard : 'default'}
                maxLength={this.props.maxLen ? this.props.maxLen : 100}
                style={[styles.input,
                {
                    width: this.props.width ? this.props.width : 244,
                    marginLeft: this.props.marginL ? this.props.marginL : 0,
                    marginTop: this.props.marginT ? this.props.marginT : 0,
                    textAlign: this.props.alignText ? this.props.alignText : 'left',
                    fontSize: this.props.fontSize ? this.props.fontSize : 15,
                }]}
                autoFocus={this.props.focus ? this.props.focus : false}
                secureTextEntry={this.props.type == 'security' ? this.state.hidePassword : false}
            />
            <Feather style={[styles.eye,
            {
                marginTop: this.props.marginT ? this.props.marginT : 0,
            }]}
                name={(this.state.hidePassword) ? 'eye' : 'eye-off'}
                size={this.props.eye ? 24 : 0}
                color="#BA90B7"
                onPress={this.setPasswordVisibility}
            />
        </>
    );
}}

在我的文件中,我第三次调用这个组件:

export default function RegisterStep1({ navigation }) {

return (
    <View style={styles.container}>

        <Back navi={() => navigation.navigate('Login')} />

        <Text style={styles.txtNome}>
            Seu nome:
        </Text>

        <Input
            placeholder="nome"
            width={141}
            focus={true}
            maxLen={50}
        />
        <Input
            placeholder="Sobrenome"
            width={141} marginL={164}
            maxLen={50}
        />

        <Text style={styles.txtChoiceUser}>
            Escolha seu
        </Text>
        <Text style={styles.txtUser}>
            usuário:
        </Text>

        <Input
            placeholder="Usuário"
            width={312}
            marginT={200}
            maxLen={30}
        />

        <Button text="Próximo" marginT={250} navi={() => navigation.navigate('RegisterStep2')} />

        <Text style={styles.infoUser}>
            Não mostraremos seu usuário dentro do aplicativo, ele séra usado somente para logar na plataforma.
        </Text>

    </View>

但是我无法在组件 Input 中调用“onSubmitEditing”,也没有想过在我的组件中解决这个问题的方法。

存在某种形式吗?

我在我的组件中使用这个解决了这个问题:

<Input
            placeholder="nome"
            inputName="nome"
            width={141}
            focus={true}
            onSubmitEditing={(event) => {
                this.sobrenomeInput.focus()
            }}
            maxLen={50}
        />
        <Input
            placeholder="Sobrenome"
            inputName="sobrenome"
            width={141} marginL={164}
            maxLen={50}
            inputRef={(input) => {
                this.sobrenomeInput = input
            }}
            onSubmitEditing={(event) => {
                this.sobrenomeInput.focus()
            }}
        />

这在我的逻辑组件中:

 {...this.props}
 ref={(input) => this.props.inputRef && this.props.inputRef(input)}

现在它在两个第一个输入中工作,但在我的第三个输入中它不起作用,我仍在努力解决这个问题

我解决了这个问题,在函数调用中更改名称,为另一个参数 'this',保持类似:

<Input
            placeholder="nome"
            inputName="nome"
            width={141}
            focus={true}
            maxLen={50}
            onSubmitEditing={(event) => {
                this.sobrenomeInput.focus()
            }}
        />
        <Input
            placeholder="Sobrenome"
            inputName="sobrenome"
            width={141} marginL={164}
            maxLen={50}
            inputRef={(input) => {
                this.sobrenomeInput = input
            }}
            onSubmitEditing={(event) => {
                this.UserInput.focus()
            }}
        />

        <Input
            placeholder="Usuário"
            width={312}
            marginT={200}
            maxLen={30}
            inputRef={(input) => {
                this.UserInput = input
            }}
        />

这样看起来可以工作一段时间 ;)