Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
函数传入javascript时如何分解对象数组_Javascript_Reactjs_Destructuring - Fatal编程技术网

函数传入javascript时如何分解对象数组

函数传入javascript时如何分解对象数组,javascript,reactjs,destructuring,Javascript,Reactjs,Destructuring,我试图用功能组件重写todo应用程序,但我想不出一种方法来分解对象的结构和数组。谢谢你的帮助 原始组件: class ProductTable extends React.Component { render() { let rows = []; let lastCategory = null; this.props.products.forEach(function(product) { if (product.category !== lastCate

我试图用功能组件重写todo应用程序,但我想不出一种方法来分解对象的结构和数组。谢谢你的帮助

原始组件:

class ProductTable extends React.Component {
render() {
    let rows = [];
    let lastCategory = null;
    this.props.products.forEach(function(product) {
        if (product.category !== lastCategory) {
            rows.push(<ProductCategoryRow category={product.category} key={product.category} />);
        }
        rows.push(<ProductRow product={product} key={product.name} />);
        lastCategory = product.category;
    });
    return (
        <table>
            <thead>
            <tr>
                <th>Name</th>
                <th>Price</th>
            </tr>
            </thead>
            <tbody>{rows}</tbody>
        </table>
    );
  }
}

“限制”是什么意思?为什么不
ProductTable=(products=[])=>…
?很抱歉造成混淆。这是一个完整的示例。您需要类似于
ProductTable=({products=[{stocked,name,price}]})
?那么您希望得到什么-一个数组
库存
,另一个数组
名称
等等?或者是一个数组
产品
,其中的对象除了列出的属性外,其他属性都被删除了?无论如何,这是不可能的。您可以验证您的输入结构(我不建议在这里这样做),或者使用静态类型语言(例如typescript)。我想记录一个事实,
products
是形式参数,它是一个产品对象数组,其结构是
{stocked,name,price}
。只需添加文档注释:你说的“限制性”是什么意思?为什么不
ProductTable=(products=[])=>…
?很抱歉造成混淆。这是一个完整的示例。您需要类似于
ProductTable=({products=[{stocked,name,price}]})
?那么您希望得到什么-一个数组
库存
,另一个数组
名称
等等?或者是一个数组
产品
,其中的对象除了列出的属性外,其他属性都被删除了?无论如何,这是不可能的。您可以验证您的输入结构(我不建议在这里这样做),或者使用静态类型语言(例如typescript)。我想记录一个事实,
products
是一个形式参数,它是一个产品对象数组,其结构为
{stocked,name,price}
。只需添加文档注释:
const ProductTable = ({products = []}) => {
let rows = [];
let lastCategory = null;

products.forEach(function (product) {
    if (product.category !== lastCategory) {
        rows.push(<ProductCategoryRow category={product.category} key={product.category} />);
    }
    rows.push(<ProductRow product={product} key={product.name} />);
    lastCategory = product.category;
});

return (
    <table>
        <thead>
        <tr>
            <th>Name</th>
            <th>Price</th>
        </tr>
        </thead>
        <tbody>{rows}</tbody>
    </table>
  );
};
const ProductTable = ({products = []}) => ...