javascript - JSX 中的循环和渲染
问题描述
我需要遍历一个类似数组的对象,并根据它的长度在 React Native 中渲染组件,代码如下:
const Screen = function({navigation, route}) {
var data = [];
var cases = [];
axios.get(`${uri}cases`)
.then(json => {
console.log(json)
data = json.data
}).catch(err => {
console.log(err)
});
function showCases(cases){
cases.forEach(one => {
cases.push(<Text>one._id</Text>)
})
}
showCases(data)
var comp = [<Text>Hello</Text>, <Text>Hello</Text>]
return(
<View>
<View>
<Button title='Click' onPress={() => {
cases.push(<Text>Hello</Text>)
console.log(cases)
console.log(comp)
console.log(comp == cases)
}} />
<Button
title="Modern Clinic"
disabled={true}
/>
<Button title="Profit" onPress={() => {
navigation.push('Profit')
}} />
<Button title="Expenses" onPress={() => {
navigation.push('Expenses')
}}/>
<Button title="New" onPress={() => {
navigation.push('New...')
}}/>
</View>
<SafeAreaView>
<ScrollView>
<Text>{cases}</Text>
</ScrollView>
</SafeAreaView>
</View>
)
}
我只想循环data
变量并渲染组件我只想要逻辑,所以渲染<Text />
组件就可以了逻辑
解决方案
你需要使用FlatList
哪个是最常用的组件来显示List
在 React 中,它就像一个Foreach
.
在参数数据中传递您的数据。并在你的renderItem
地方你的组件。在您的组件中,访问foreach
with的值{item.Something}
,在此示例中,数据为:
this.state.listParam = {.{"des":"Name","value":"John","mandatory":true, ...} }
<FlatList
style={{ marginBottom: 40 }}
data={this.state.listParam}
keyExtractor={(item,i) => i.toString()}
renderItem={({item,index}) => {
return(
<HiddenMandatoryInput
style={ style.textinput }
placeholder={item.des}
value={item.value}
mandatory={item.mandatory}
visible={item.visible}
onChangeText={(text) => this._changeText(text, item.name)}
type={item.type}
/>
)
}}
/>
推荐阅读
- php - 会话值在 iframe 的第二页上变空
- python - 如何在python中创建一个带有上下文的函数
- azure-devops-migration-tools - 进程迁移在当前版本中不起作用?(11.11.8.0)
- flutter - AuthBloc 类型的对象/工厂未在 GetIt 中注册。(使用注射剂)
- flutter - Flutter:从子小部件调用父函数
- javascript - 箭头主体周围出现意外的块语句;在 => 箭头体样式之后立即移动返回值
- python - 在单个嵌入中制作 Banlist
- macos - 使用 Cmake 创建 XPC 服务
- python - 如何使用python中的for循环将矩阵中的向量添加到空矩阵中?
- cryptocurrency - 来自同一来源的多个 NFT