react-native - React Native - 如何循环一个组件中的多个渲染元素?
问题描述
我需要遍历组件中呈现的多个 Input 元素并验证它们是否为空。据我所知,React Native 中没有“Document.getElementsByClass”,所以我不知道如何获取它们,请参见下面的代码......
const CreateAccountFormA = props => {
verifyFormIsCompleted = props => {
}
return (
<Layout style={styles.mainContainer}>
<Layout style={styles.inputsContainer}>
<Input
placeholder="Company"
></Input>
<Input
placeholder="First Name"
></Input>
<Input
placeholder="Last Name"
></Input>
<Input
placeholder="Address"
></Input>
<Layout style={styles.parent}>
<Input
style={styles.child}
placeholder="City"
></Input>
<Input
style={{...styles.child, ...styles.centerChild}}
placeholder="State"
></Input>
<Input
style={styles.child}
placeholder="Zip"
></Input>
</Layout>
</Layout>
<Layout style={styles.btnContainer}>
<Button
onPress={verifyFormIsCompleted}
>NEXT
</Button>
</Layout>
</Layout>
)
}
任何帮助将不胜感激,谢谢!
解决方案
有两种方法可以做到这一点,愚蠢的方式和正确的 React 方式。正如你所说,在 React Native 中并不完全是 a Document.getElementsByClass
,但是有 refs 。使用您的代码,您可以执行
<Input placeholder="Last Name" ref={(ref)=>{this.lastNameInput = ref)}></Input>
您可以将所有 ref 存储在一个数组中,或者通过所有这些循环查看 ref.value。
现在,“正确”的 React 方式是使用状态。在您的构造函数中声明this.state={lastName: ""}
,然后将onChangeText
道具添加到您的输入。
<Input placeholder="Last Name" onChangeText={(lastName)=>{this.setState({lastName}}}></Input>
每当您的用户现在更改该 Input 中的值时,this.state.lastName
也会更改。然后,您所要做的就是遍历您的状态,例如通过做
for(var field of this.state.keys()){
if(this.state[field] === ""){
//failed to validate
}
}
推荐阅读
- gcc - cmake可以处理rc文件吗?
- javascript - 快速服务器的前端功能为空白
- tensorflow - tf.GradientTape() 仅返回无
- javascript - 如何从 HTML 表中仅访问整数值(仅限卷号)并将值存储在 JS 数组中
- python - 是否可以将 Selenium 屏幕截图保存到 PIL 图像对象?
- node.js - 更改不和谐机器人存在时用户未定义
- swift - 如何在 SwiftUI 上使完整按钮可点击
- c# - 控制台窗口嵌入到 Windows 窗体中
- python - 如何让 Django 网页从 Firebase 运行实时数据?
- c# - WPF如何将所有事件从一个窗口重定向到另一个窗口