gpt4 book ai didi

javascript - 如何在 JSON 响应 react-native 上生成动态 UI

转载 作者:行者123 更新时间:2023-11-30 19:47:44 27 4
gpt4 key购买 nike

//这里我尝试生成动态用户界面。通过 API,我得到了一些 JSON 格式的响应,我必须在 UI 上绘制它。就像我没有定义任何“TextInput”一样,它应该动态生成。下面是一些示例 JSON 响应。这可能会根据不同的请求而改变。请帮忙,我卡在下面只是一个代码,我不知道该怎么做。

import * as React from 'react';
import { Text, View, StyleSheet, Alert, Picker } from 'react-native';
import { Constants } from 'react-native';
import { TextInput } from 'react-native-gesture-handler';

var myloop = [];
export default class UiDynamic extends React.Component {

// add a selectValue to your state to stop the overwriting
state = {
PickerValueHolder: [],
selectedValue: ''
}

componentDidMount() {
// remove the return
fetch('http://userapi/inventory/viewinventorytype', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"username" :"admin",
"password" :"admin"
})
}).then((response) => response.json())
.then((responseJson) => {
// use the inventoryTypeData as it is already an array
let PickerValueHolder = responseJson.inventoryTypeData;
for (let i = 0; i < PickerValueHolder.length; i++) {
datavalue=() => {
<Text>Hello ABhi</Text>
console.log("Hello ABhi");
}
}

this.setState({ PickerValueHolder }); // Set the new state
})
.catch((error) => {
console.error(error);
});
}

GetPickerSelectedItemValue=()=>{
Alert.alert(this.state.PickerValueHolder);
}

render() {


for (let i = 0; i < 10; i++) {
datavalue=() => {
<Text>Hello ABhi</Text>
console.log("Hello ABhi");
}
myloop.push(
<View key={<TextInput></TextInput>}>
<Text style={{ textAlign: 'center', marginTop: 5 }} >{<Text>Hello</Text>}</Text>
</View>
);
}


return (
<View style={styles.container}>
{this.datavalue.bind(this)}
{myloop}

</View>
);
}
}

const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
backgroundColor: '#ecf0f1',
padding: 8,
}
});

//下面是示例 JSON 响应..假设这里有四个属性和它们的数据类型,那么在 UI 4 上应该生成“TextInput”。

{
"inventoryTypeData": [{
"data type": int,
"Field 1": ""
}, {
"data type": string,
"Field2": ""
}, {
"data type": int,
"Field 3": ""
}, {
"datatype": int,
"Field4": ""
}],
"success": "true"
}

最佳答案

从 'react-native' 导入 { TextInput };

一旦您将响应映射到状态this.setState({ PickerValueHolder });

然后您可以使用 map 函数在您的渲染方法中循环遍历它

  return(
<View style={styles.container}>
{this.state.PickerValueHolder.map(data=>(
<View>
<TextInput
placeholder={data.placeholder}
keyboardType={data.datatype==="int" ? 'numeric': 'default'}
onChangeText={(text) => this.setState({...this.state.value [data.name]: text })}
value={this.state.value[data.name]}
/>
<Button
onPress={this.handleButtonPress(data.name).bind(this)}
/>
<View/>
/>
))}
</View>
)
}```

So here you are checking if the datatype is an int and then setting the keyboard type to numeric

This is also setting all the changes to a value object in state.

The Button calls a function with the name of of the value related to the text input

关于javascript - 如何在 JSON 响应 react-native 上生成动态 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54801602/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com