繁体   English   中英

反应:从无状态组件返回迭代列表

[英]React: Returning iterated list from a stateless component

运行此代码时,出现错误:

意外的令牌,预期的,

我正在做的就是在数组上调用map方法:

const Available = ({prod}) => {
    let keys = Object.keys(prod)
    var filtered = keys.filter((item, index) => prod[item])
    return (
        {
            filtered.map((item, index) => {
            return <li><a>{item}</a></li>
        })
}
    )

}

Available.defaultProps = {
    Prod: {
        nuts: true,
        bolts: true,
        wiper: false,
        discbreak: true
    }
}

const Drop = (props) => {
    var style = {
        display: 'block'
    }
    if (props.isOpen) {
        return (
            <ul className="dropdown-menu" style={style}>
                <Available />
            </ul>
        )
    } else {
        return false
    }
}

我什至尝试将“可用”组件更改为如下所示。

const AvailableProducts = ({products}) => {
  debugger;
  let keys = Object.keys(products);
  var filtered = keys.filter((item,index)=>products[item]);

  filtered.map((item,index)=>{
    return <li><a>{item}</a></li>
  })
}

现在我最终得到错误:

必须返回有效的React元素(或null)。 您可能返回了undefined,数组或其他无效对象。

我在哪里做错了? 有人可以帮忙吗?

在第二个代码中,您没有返回任何内容,因此react引发了“有效的React元素...”错误。 由于filtered是一个数组,因此您应该在div中返回已过滤的变量,并且应该能够看到没有错误的组件。

const AvailableProducts = ({products}) => {
  debugger;
  let keys = Object.keys(products);
  var filtered = keys.filter((item,index)=>products[item]);

  filtered = filtered.map((item,index)=>{
    return <li><a>{item}</a></li>
  });
  return <div>{filtered}</div>
}

尝试这个:

const Available = ({prod}) => {
  let keys = Object.keys(prod);
  var filtered = keys.filter((item)=>prod[item]);
  return (
    <div>
      {filtered.map((item)=><li><a>{item}</a></li>)}
    </div>
  );
}

您应该返回一个有效的React组件(或null)。

参考: https : //facebook.github.io/react/docs/react-component.html#render

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM