javascript - 为什么不 for ... in 在这里循环?

标签 javascript function react-native ecmascript-6

我有一个包含 N 个对象的变量。对于每个对象,我希望将它们传递给一个子组件——因此我们也将有 N 个具有不同 Prop 的子组件。

家长:

    renderBrandCards() {

        const { marketData } = this.state;

        let i = 0;
        for (const stock in marketData){
            i++;
            return (
                <BrandCard
                    key={i}
                    stock_name={stock}
                    stock_data={marketData[stock]}
                />
            )
        }
   }
   // .... render etc
    return (
        <ScrollView>
            {this.renderBrandCards()}
        </ScrollView>
    )

但是,只有 marketDataMap 的第一个对象被传递给 BrandCard 组件并呈现。它不会循环。

我在这里使用 for ... in 是不是错了?

最佳答案

Am I using for ... in wrong here?

是的,因为您是在 for 循环的第一步 之后从函数返回。

您必须创建一个包含所有所需项目的数组,然后只需返回该数组。

let i = 0;
let brandCards = [];
for (const stock in marketData){
        i++;
        brandCards.push(
            <BrandCard
                key={i}
                stock_name={stock}
                stock_data={marketData[stock]}
            />
        )
}
return brandCards;

但我建议您使用另一种方法,使用 map 方法。

return Object.keys(marketData).map(function(key, i){
     return (<BrandCard key={i} stock_name={key} stock_data={marketData[key]}/>);
});

关于javascript - 为什么不 for ... in 在这里循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48238754/

相关文章:

javascript - 使用与 DOCTYPE 不同的 window.innerHeight/Width 的全屏 HTML 元素

matlab - 避免在 matlab 函数中求值

c - 从 C 函数返回结构体会出现编译错误

javascript - Node.js 中的多个函数

javascript - React-Native:Modal 中的 Flatlist 无法滚动

android - react native StackOverflowException

javascript - 通过插入地址栏中的 Javascript 命令将值复制到剪贴板

javascript - 如何从点击的数字中获取值(数字)

javascript - 如何测试 html5 音频、视频和特定的 css 属性?

javascript - 我如何从异步存储中检索数据并在我的组件中使用它?