我是一个React和React原生菜鸟,所以它可能是一个非常愚蠢的问题,但我怎么能使用' for循环'在render函数里面包含我的组件?这就是我所做的
render() {
return (
<View style={styles.container}>
{ for (let i=0; i<20; i++)
{
//This is my component
<CounterButton />
}
}
</View>
);
}
但它抛出了一个错误,然后有人建议在代码中包含代码并在render函数中调用它,所以我做了
createButtons() {
for (let i =0; i<20; i++){
<CounterButton />;
}
}
render() {
return (
<View style={styles.container}>
{this.createButtons()}
</View>
);
}
现在我看不到错误,但它只是一个空白的屏幕。我知道你可以访问道具但是渲染函数应该主要只包含JSX代码吗?提前致谢。
答案 0 :(得分:1)
您的createButtons
函数不会返回任何内容。
您可以将按钮添加到数组并返回该数组。
createButtons() {
const buttons = [];
for (let i =0; i<20; i++){
buttons.push(<CounterButton />);
}
return buttons;
}
请注意,在渲染元素数组时,react-native中的每个元素都需要具有key
属性。
答案 1 :(得分:1)
Jsx可以包含返回组件或组件数组的表达式。在您的情况下,您需要一些返回组件数组的东西。
坚持使用for循环:
createButtons() {
let buttons = [];
for (let i=0; i<20; i++){
buttons.push(<CounterButton />);
}
return buttons;
}
如果你想在jsx中这样做,这样的事情应该有效:
render() {
return (
<View style={styles.container}>
{[...Array(20).keys()].map(<CounterButton />)}
</View>
);
}