首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用react-native-dialog,如何获取Dialog.Input内容?

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

Stack Overflow用户
提问于 2018-09-28 22:08:31
回答 1查看 9.5K关注 0票数 1
代码语言:javascript
运行
复制
<Dialog.Container visible={this.state.dialogSendEmailVisible}>
      <Dialog.Title>Password Recovery</Dialog.Title>
      <Dialog.Input label="Email"></Dialog.Input>
      <Dialog.Button label="OK" onPress={this.handleSendEmail} />
 </Dialog.Container>

我有一个简单的对话框,用于密码恢复。我不是一个有限元开发人员,我没有找到我如何才能传递在电子邮件字段键入的值到handleSendEmail函数。Github和npm页面没有任何示例。Github页面:https://github.com/mmazzarolo/react-native-dialog

PS:这可以是一个非常反应的本地基本功能,但我没有找到一种方法…

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-28 22:46:20

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

代码语言:javascript
运行
复制
onSubmitEditing and onChangeText

从文档中:

代码语言:javascript
运行
复制
onSubmitEditing

按下文本输入的提交按钮时调用的

回调。如果指定了multiline={true},则无效。

代码语言:javascript
运行
复制
TYPE        REQUIRED
function    No

代码语言:javascript
运行
复制
onChangeText

文本输入的文本更改时调用的

回调。更改的文本将作为参数传递给回调处理程序。

代码语言:javascript
运行
复制
TYPE        REQUIRED
function    No

它的意思如下:

代码语言:javascript
运行
复制
<Dialog.Input label="Email" 
   onChangeText={email => this.setState({email})}
   value={this.state.email}
   onSubmitEditing={
       (event) => this.doSomethingWithSubmit(event)
   }
>
</Dialog.Input>

更新

所以我已经测试过了,它的工作原理如下--我使用的是Typescript,所以只要删除类型( : string)就行了。

Render中的

代码语言:javascript
运行
复制
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>
    )

handleEmail:

代码语言:javascript
运行
复制
private handleEmail = (email : string) => {
    console.log("email");
    console.log(email);
}

结果:

更进一步的

作为这个项目的附注,我注意到当我使用Live reload时-对话框从来没有重新呈现过,而是在旧的对话框上呈现。我会考虑到这一点。也许这是我的环境,但其他一切都很好。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52557142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档