- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在创建一个 react 应用程序,在添加后显示 20 个产品,使其余产品保持空闲状态,并在到达最后一批显示产品的底部时显示另外 20 个产品。我在一个分割数组的函数中创建了一个 while 循环(这有效)。当我引入渲染中的代码(timeAgo 和 Prods const)并尝试添加 while 循环来显示分割数组时,我收到错误:
在我在渲染中显示带有 const timeAgo 和 Prods 的所有产品但其中没有 while 循环之前,它只是映射所有产品的思想并显示。
这是我的 react 代码
import React, { Component } from 'react';
import { Loading } from './LoadingComponent';
const API = 'http://localhost:3000/products';
class Products extends Component {
constructor(props) {
super(props);
this.state = {
products: [],
percentage: '',
isLoading: false,
error: null,
};
}
componentDidMount() {
this.setState({ isLoading: true });
fetch(API)
.then(response => {
if (response.ok) {
return response.json();
} else {
throw new Error('Something went wrong ...');
}
})
.then(data => this.setState({ products: data, isLoading: false }))
.catch(error => this.setState({ error, isLoading: false }));
}
sortPrice = () => {
const { products } = this.state;
products.sort((a, b) => a.price - b.price)
this.setState({ products })
}
sortSize = () => {
const { products } = this.state;
products.sort((a, b) => a.size - b.size)
this.setState({ products })
}
sortId = () => {
var reA = /[^a-zA-Z]/g;
var reN = /[^0-9]/g;
const { products } = this.state;
products.sort(function sortAlphaNum(a, b) {
var aA = a.id.replace(reA, "");
var bA = b.id.replace(reA, "");
if (aA === bA) {
var aN = parseInt(a.id.replace(reN, ""), 10);
var bN = parseInt(b.id.replace(reN, ""), 10);
return aN === bN ? 0 : aN > bN ? 1 : -1;
} else {
return aA > bA ? 1 : -1;
}
})
this.setState({ products })
}
displayContent = () => {
const { products } = this.state;
var arrays = [], size = 20;
var arrayslenght = arrays.length;
var i = 0;
while (products.length > 0){
arrays.push(products.splice(0, size));
}
console.log(arrays);
const timeAgo = (prevDate) => {
const diff = Number(new Date()) - prevDate;
const minute = 60 * 1000;
const hour = minute * 60;
const day = hour * 24;
const month = day * 30;
const year = day * 365;
switch (true) {
case diff < minute:
const seconds = Math.round(diff / 1000);
return `${seconds} ${seconds > 1 ? 'seconds' : 'second'} ago`
case diff < hour:
return Math.round(diff / minute) + ' minutes ago';
case diff < day:
return Math.round(diff / hour) + ' hours ago';
case diff < month:
return Math.round(diff / day) + ' days ago';
case diff < year:
return Math.round(diff / month) + ' months ago';
case diff > year:
return Math.round(diff / year) + ' years ago';
default:
return "";
}
};
const Prods = () => {
return (
<div>
<div className="row">
<div className="col-12">
<button onClick={this.sortPrice}>sort by price lower to higher</button>
<button onClick={this.sortSize}>sort by size small to big</button>
<button onClick={this.sortId}>sort by Id</button>
</div>
</div>
while (arrayslenght > i) {
{arrays[i].map(product =>
<div key={product.id} className="row">
<div className="col-4">
<p> Price: ${(product.price/100).toFixed(2)}</p>
</div>
<div className="col-4">
<p style={{fontSize: `${product.size}px`}} > {product.face}</p>
</div>
<div className="col-4">
<p>Published: {timeAgo(new Date(product.date).getTime())}</p>
</div>
</div>
)}
i= i+1;
<div className="row">
<div className="col-12">
<p>ADD</p>
</div>
</div>
}
<div className="row">
<div className="col-12">
<p>"~END OF CATALOG~"</p>
</div>
</div>
</div>
);
};
}
render() {
this.displayContent();
const { products, isLoading, error } = this.state;
if (error) {
return <p>{error.message}</p>;
}
if (isLoading) {
return <Loading />;
}
return (
<Prods />
);
}
}
export default Products;
这是我的错误
解析错误:意外的标记,应为“,”
117 | 118 | 118 while (数组长度 > i) {
119 | {arrays[i].map(product => | ^ 120 | 121 | 122 |
我真的很新,所以我不确定这是做我想做的事情的写作方式,我有点迷失了。
这是来自 localhost:3000/products 的一些内容
{
"id": "33480-rdt892kej5",
"size": 19,
"price": 762,
"face": "( .-. )",
"date": "Thu Nov 07 2019 17:15:33 GMT-0500 (Colombia Standard Time)"
},
{
"id": "71197-jvsw3t5vmun",
"size": 35,
"price": 318,
"face": "( .o.)",
"date": "Sun Nov 10 2019 15:52:51 GMT-0500 (Colombia Standard Time)"
},
{
"id": "52383-rv7ozq0t5md",
"size": 32,
"price": 234,
"face": "( `·´ )",
"date": "Wed Nov 06 2019 01:43:26 GMT-0500 (Colombia Standard Time)"
},
{
"id": "5171-cy5v55aenm",
"size": 32,
"price": 25,
"face": "( ° ͜ ʖ °)",
"date": "Tue Nov 05 2019 09:44:45 GMT-0500 (Colombia Standard Time)"
},
{
"id": "24915-kunbaov27g",
"size": 14,
"price": 924,
"face": "( ͡° ͜ʖ ͡°)",
"date": "Mon Nov 11 2019 03:54:58 GMT-0500 (Colombia Standard Time)"
},
{
最佳答案
问题是渲染内嵌套的 while
和 map
。您需要更新这些以返回组件:像这样嵌套时return ()
。
我没有您项目中的示例数据,但您应该能够遵循下面的类似示例:
const categories = [
{
name: "books",
products: [{ name: "The Hobbit" }, { name: "Dune" }]
},
{
name: "films",
products: [{ name: "Star Wars" }, { name: "Ghostbusters" }]
}
];
...
return (
<>
<h1>Demo For Nested Loops</h1>
{categories.map(category => {
return (
<>
<h2 key={category.name}>{category.name}</h2>
{category.products.map(product => {
return <h4 key={product.key}>{product.name}</h4>;
})}
</>
);
})}
</>
);
举个例子:
关于javascript - React 尝试在添加元素之前执行 while 循环以显示 n 个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58938833/
我创建了一个用户可以添加测试的字段。这一切运行顺利我只希望当用户点击(添加另一个测试)然后上一个(添加另一个测试)删除并且这个显示在新字段中。 所有运行良好的唯一问题是点击(添加另一个字段)之前添加另
String[] option = {"Adlawan", "Angeles", "Arreza", "Benenoso", "Bermas", "Brebant
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我正在努力将 jQuery 滚动功能添加到 nav-tab (Bootstrap 3)。我希望用户能够选择他们想要的选项卡,并在选项卡内容中有一个可以平滑滚动到 anchor 的链接。这是我的代码,可
我正在尝试在用户登录后再添加 2 个 ui 选项卡。首先,我尝试做一个之后。 $('#slideshow').tabs('remove', '4'); $("#slideshow ul li:last
我有一个包含选择元素的表单,我想通过选择添加和删除其中一些元素。这是html代码(这里也有jsfiddle http://jsfiddle.net/txhajy2w/):
正在写这个: view.backgroundColor = UIColor.white.withAlphaComponent(0.9) 等同于: view.backgroundColor = UICo
好的,如果其中有任何信息,我想将这些列添加到一起。所以说我有 账户 1 2 3 . 有 4 个帐户空间,但只有 3 个帐户。我如何创建 java 脚本来添加它。 最佳答案 Live Example H
我想知道是否有一种有效的预制算法来确定一组数字的和/差是否可以等于不同的数字。示例: 5、8、10、2,使用 + 或 - 等于 9。5 - 8 = -3 + 10 = 7 + 2 = 9 如果有一个预
我似乎有一个卡住的 git repo。它卡在所有基本的添加、提交命令上,git push 返回所有内容为最新的。 从其他帖子我已经完成了 git gc 和 git fsck/ 我认为基本的调试步骤是
我的 Oracle SQL 查询如下- Q1- select hca.account_number, hca.attribute3, SUM(rcl.extended_amou
我正在阅读 http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingG
我正在尝试添加一个“加载更多”按钮并限制下面的结果,这样投资组合页面中就不会同时加载 1000 个内容,如下所示:http://typesetdesign.com/portfolio/ 我对 PHP
我遇到这个问题,我添加了 8 个文本框,它工作正常,但是当我添加更多文本框(如 16 个文本框)时,它不会添加最后一个文本框。有人遇到过这个问题吗?提前致谢。 Live Link: JAVASCRIP
add/remove clone first row default not delete 添加/删除克隆第一行默认不删除&并获取正确的SrNo(例如:添加3行并在看到问题后删除SrNo.2)
我编码this ,但删除按钮不起作用。我在控制台中没有任何错误.. var counter = 0; var dataList = document.getElementById('materi
我有一个类似数组的对象: [1:数组[10]、2:数组[2]、3:数组[2]、4:数组[2]、5:数组[3]、6:数组[1]] 我正在尝试删除前两个元素,执行一些操作,然后将它们再次插入到同一位置。
使用的 Delphi 版本:2007 你好, 我有一个 Tecord 数组 TInfo = Record Name : String; Price : Integer; end; var Info
我使用了基本的 gridster 代码,然后我声明了通过按钮添加和删除小部件的函数它工作正常但是当我将调整大小功能添加到上面的代码中时,它都不起作用(我的意思是调整大小,添加和删除小部件) 我的js代
title 323 323 323 title 323 323 323 title 323 323 323 JS $(document).keydown(function(e){
我是一名优秀的程序员,十分优秀!