map()返回未在react组件中呈现

时间:2018-12-29 15:27:51

标签: javascript json reactjs

我正在尝试使用JSON数据映射在第二个渲染中渲染数据。我必须查看两个对象才能找到匹配的product_ids

我在这里做什么错了?

  { 
    this.props.productGroups.map((productGroup) => {
      return (
        <TabContainer key={productGroup.id}>
          <h3>{productGroup.title}</h3>

          {
            productGroup.product_ids.map((productId) => {
              this.props.products.map((product) => {
                if (product.id == productId) {
                  return (
                    <div>
                      test
                    </div>
                  )
                } else {
                  console.log('miss')
                }
              })
            })
          }

        </TabContainer>
      )
    }) 
  } 

在旁注中,我知道这是回调地狱,只是不确定要采用哪种最佳重构方式。

2 个答案:

答案 0 :(得分:1)

您的第一个.map()在this.props....前缺少返回值

return this.props.products.map((product) => {

答案 1 :(得分:1)

@BenSteward的答案是正确的。请注意,有多种方法可以减少嵌套地图。

一种方法是,您无需遍历product_ids并遍历其中的products,而只需遍历products并检查是否product是指定product_ids中的ID 退出

(这是代码更干净的版本,其中parenthesisbraces更少)

{
  this.props.productGroups.map(productGroup => (
    <TabContainer key={productGroup.id}>
      <h3>{productGroup.title}</h3>

      {this.props.products.map(product => {
        if (productGroup.product_ids.includes(product.id)) { /* Note this line */
          return <div>test</div>
        }
        console.log('miss')
      })}
    </TabContainer>
  ))
}

我相信它的性能会更好,并且对您未来的自我也更容易理解。