简体   繁体   English

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

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

When I run this code, I get the error: 运行此代码时,出现错误:

unexpected token, expected , 意外的令牌,预期的,

All I am doing is calling a map method on an array: 我正在做的就是在数组上调用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
    }
}

I even tried changing 'Available' Component to as below. 我什至尝试将“可用”组件更改为如下所示。

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>
  })
}

Now I end up getting error: 现在我最终得到错误:

A valid React element (or null) must be returned. 必须返回有效的React元素(或null)。 You may have returned undefined, an array or some other invalid object. 您可能返回了undefined,数组或其他无效对象。

Where am i doing wrong? 我在哪里做错了? Can someone help on this? 有人可以帮忙吗?

In your second code, you are not returning anything, thus react throws that "A valid React element ..." error. 在第二个代码中,您没有返回任何内容,因此react引发了“有效的React元素...”错误。 Since filtered is an array, you should return filtered variable inside the div and you should be able to see your component without errors. 由于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>
}

Try this: 尝试这个:

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>
  );
}

You should return a single, valid React component (or null). 您应该返回一个有效的React组件(或null)。

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

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

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