React js循环遍历从刀片接收的数组

Posted

技术标签:

【中文标题】React js循环遍历从刀片接收的数组【英文标题】:React js loop through array received from blade 【发布时间】:2018-10-01 16:22:08 【问题描述】:

我在一个 Laravel 项目的前端使用 React js。从控制器,我将一个数组传递给我的视图:

return view('shopCart')->with('items',$it);

现在在视图中 a 可以像这样遍历数组:

@foreach($items as $item)
                <li><input type="checkbox" name=""> <span>$item->Name</span> <span></span>  <span>$item->Cost</span> </li>
@endforeach

这工作正常。但我想让视图更加动态(顺便说一下,这是购物车中的产品列表)。例如,默认情况下所有复选框都会被选中,这意味着用户正在购买所有商品。我希望如果用户取消选中一个框,总价格会发生变化。所以我制作了一个 React 组件,并通过 props 将 $items 数组传递给该组件:

<div id="listshops" datas=$items></div>

还有组件:

class Items extends Component 
    render() 


        return (
            <div className="container">
               <a href="/products">Continue shopping</a>
               //LOOP THROUGH THE ARRAY OF PRODUCTS
            </div>
        );
    


export default Items;


window.onload=function()
if (document.getElementById('listshops')) 
    var data=document.getElementById('listshops').getAttribute("datas");
    ReactDOM.render(<Items items=data/>, document.getElementById('listshops'));



如何循环遍历传递给组件的数组,以便像在刀片中的 @foreach 中一样显示产品?

【问题讨论】:

这是以下问题的重复问题:***.com/questions/46908480/… 【参考方案1】:

Array#map,不要“循环”。您正在将一个数据集(您的产品)映射到另一个相同大小的数据集(React 组件)

const  items  = this.props;

return (
  <div className="container">
    <a href="/products">Continue shopping</a>
    items.map(( Name, Cost ) => <li key=Name>
      <input type="checkbox" name="" /> <span>Name</span> <span></span>  <span>Cost</span>
    </li>)
  </div>
);

通常当您map 时,这很好地表明您正在使用一个也可以重复使用的组件。这对您来说可能是一种更清洁的方法:

const Product = ( Name, Cost ) => (
  <li>
    <input type="checkbox" name="" />
    <span>Name</span>
    <span></span>
    <span>Cost</span>
  </li>
);

然后在你的渲染中:

const  items  = this.props;

return (
  <div className="container">
    <a href="/products">Continue shopping</a>
    items.map(( Name, Cost ) => <Product ...Name, Cost/>
  </div>
);

【讨论】:

以上是关于React js循环遍历从刀片接收的数组的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 React JS 循环遍历 MongoDB 数组以呈现表?

循环遍历数组并一次显示单个项目,动态持续时间,如 react js 中的 setTimeout 或 SetInterval

循环遍历两个对象数组以将匹配值推送到新数组在 React 中不起作用,但在 JS Fiddle 中起作用

js的Dom对象集合循环遍历过程中数组长度发生变化,小白不懂,求大神指教

37 掌握v-for遍历数组和对象

js遍历数组some()方法