const Test = ({ inventory }) => <div className="row"> {inventory.map((item, i) => <div className="item" key={"item_" + i}> <div className="card hoverable col s3"> <img onClick={buyItem(i)} src={item.img} alt="" /> <div className="container center-align"> <h4 className=""> {item.name} </h4> <p> Price: {item.price} </p> <p> Average price paid: {item.averageDisplay} </p> <p> Amount owned: {item.owned} </p> <button className="btn" data={item.index} onClick={sellItem(i)} name="button" > Sell </button> </div> </div> </div> )} </div>; ReactDOM.render(<Test inventory{inventory}/>, document.getElementById("container") ); inventory is an array of objects, I've successfully been able to loop through in this example, but for some reason I can't figure out how to pass the value of i into a function despite that it's already being used to generate unique keys.