使用react-native-dialog如何获取Dialog.Input内容?

时间:2018-09-28 14:08:31

标签: react-native

Microsoft.Azure.Webjobs.Script.ExtensionsMetadataGenerator

我有一个简单的对话框,该对话框用于恢复密码。我不是FE开发人员,也找不到如何将在Email字段中键入的值传递给handleSendEmail函数。 Github和npm页面没有任何示例。 Github页面:https://github.com/mmazzarolo/react-native-dialog

PS:这可能是一个非常有反应的本机基本功能,但我找不到找到方法...

1 个答案:

答案 0 :(得分:2)

假设对话框输入/按钮扩展了React Native自身的-那么您可以调用:

onSubmitEditing and onChangeText

从文档中

onSubmitEditing
  

当文本输入的“提交”按钮为   按下。如果指定了multiline = {true},则无效。

TYPE        REQUIRED
function    No

onChangeText
  

在文本输入的文本更改时调用的回调。已变更   文本作为参数传递给回调处理程序。

TYPE        REQUIRED
function    No

它的含义如下:

<Dialog.Input label="Email" 
   onChangeText={email => this.setState({email})}
   value={this.state.email}
   onSubmitEditing={
       (event) => this.doSomethingWithSubmit(event)
   }
>
</Dialog.Input>

更新

所以我已经对此进行了测试,它的工作原理如下-旁注-我正在使用Typescript,所以只需删除类型(: string),等等:

渲染中

return (
        <View>
           <View>
                <Button onPress={this.showDialog}>
                    <Text>Show Dialog</Text>
                </Button>
                <Dialog.Container visible={true}>
                    <Dialog.Title>Password Recovery</Dialog.Title>
                    <Dialog.Input label="Email" onChangeText={(email : string) => this.handleEmail(email)}
                    ></Dialog.Input>
                    <Dialog.Button label="OK" onPress={this.handleSendEmail} />
                </Dialog.Container>
            </View>
        </View>
    )

处理电子邮件:

private handleEmail = (email : string) => {
    console.log("email");
    console.log(email);
}

结果:

Example

进一步

作为该项目的补充说明,当我使用Live reload时,我注意到Dialog从不被重新渲染,而是在旧Dialog的顶部进行渲染。我会考虑这一点。也许是我的环境,但是其他所有东西都工作正常。