我正在尝试从此API https://apigrad.herokuapp.com/people获取数据 并将每一行的名称放入数组name []中,然后我要访问名为“ User”的组件中的每个名称,其变量名为name。
这是用户组件的代码
class User extends React.Component {
render() {
const { name, avatar} = this.props;
const userDetails = (
<View style={styles.container}>
<Image style={styles.img} source={{uri: avatar}}/>
<Text>Name: {name} </Text>
</View>
);
return (
<Card>
{userDetails}
</Card>
);
}
}
这是主要代码
export default class SettingScreen extends React.Component {
constructor(props){
super(props);
this.state={
name: [],
avatar:[]
};
}
render() {
var userCard=[];
for(let i=0; i<3; i++){
userCard.push(
<View key={i}>
<User name={this.state.name[i]}/>
))}
</View>
)
}
return (
<View style={styles.container}>
<MenuButton navigation={this.props.navigation}/>
{userCard}
</View>
);
}
async componentDidMount() {
// Load async data.
let userData = await API.get('/', {
params: {
results: 1,
inc: 'name,avatar'
}
});
// Parse the results for ease of use.
for(let i=0; i<userData.length; i++){
const Data = userData.data[i];
const names = Data.name;
const base64Icon=Data.image;
const base64Icons=base64Icon.slice(2,-1);
const avatar = 'data:image/jpg;base64,'+base64Icons;
this.setState({
name: [...this.state.name,names]
}
);
}
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#fff',
alignItems: 'center',
justifyContent: 'center',
},
text: {
fontSize: 30,
}
});
期望用户具有组件用户以及API中每一行的名称 但出现此错误 不变违反:不变违反:文本字符串必须在组件内呈现。
答案 0 :(得分:0)
看起来您的循环中有太多括号,请更改:
for(let i=0; i<1; i++){
userCard.push(
<View key={i}>
<User name={this.state.name[i]}/>
))}
</View>
)
}
收件人:
for(let i=0; i<1; i++){
userCard.push(
<View key={i}>
<User name={this.state.name[i]}/>
</View>
)
}