【发布时间】:2019-11-29 03:29:40
【问题描述】:
我想从对象上的键中获取一个数组,但是当对象为空时长度应该为 0。当我尝试使用数组 console.log() 时,数组的长度是正确的,但我的代码卡在浏览器上抛出以下错误并停止执行:
RangeError: invalid array length
burger/transformedIngredients<
src/components/Burger/Burger.js:8
5 | const burger = (props) => {
6 | let transformedIngredients = Object.keys(props.ingredients).map(igKey => (
7 | // eslint-disable-next-line max-len,react/no-array-index-key
> 8 | [...Array(props.ingredients[igKey])].map((_, i) => <BurgerIngredient key={igKey + i} type={igKey} />)
9 | )).reduce((arr, el) => (
10 | arr.concat(el)
11 | ), []);
这是我正在使用的代码:
const burger = (props) => {
let transformedIngredients = Object.keys(props.ingredients).map(igKey => (
// eslint-disable-next-line max-len,react/no-array-index-key
[...Array(props.ingredients[igKey])].map((_, i) => <BurgerIngredient key={igKey + i} type={igKey} />)
)).reduce((arr, el) => (
arr.concat(el)
), []);
if (transformedIngredients.length === 0) {
transformedIngredients = <p>Please add some ingredients!</p>;
}
我从这里经过ingredients:
class BurgerBuilder extends Component {
state = {
ingredients: {
salad: 0,
bacon: 0,
cheese: 0,
meat: 0,
},
totalPrice: 4,
};
render() {
return (
<Fragment>
<Burger ingredients={this.state.ingredients} />
<BuildControls
ingredientAdded={this.addIngredientHandler}
ingredientRemoved={this.removeIngredientHandler}
/>
</Fragment>
);
}
【问题讨论】:
标签: javascript arrays reactjs