Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.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 将材质ui封装到自定义组件中_Javascript_Reactjs_Ecmascript 6_Material Ui - Fatal编程技术网

Javascript 将材质ui封装到自定义组件中

Javascript 将材质ui封装到自定义组件中,javascript,reactjs,ecmascript-6,material-ui,Javascript,Reactjs,Ecmascript 6,Material Ui,我在材质ui表组件方面遇到了一些问题。我将表逻辑分为标题和正文组件,并在正文中为每行添加了不同的组件 export const PRODUCTS = [ {category: 'Sporting Goods', price: '$49.99', stocked: true, name: 'Football'}, {category: 'Sporting Goods', price: '$9.99', stocked: true, name: 'Baseball'}, {categor

我在
材质ui
表组件方面遇到了一些问题。我将表逻辑分为标题和正文组件,并在正文中为每行添加了不同的组件

export const PRODUCTS = [
  {category: 'Sporting Goods', price: '$49.99', stocked: true, name: 'Football'},
  {category: 'Sporting Goods', price: '$9.99', stocked: true, name: 'Baseball'},
  {category: 'Sporting Goods', price: '$29.99', stocked: false, name: 'Basketball'},
  {category: 'Electronics', price: '$99.99', stocked: true, name: 'iPod Touch'},
  {category: 'Electronics', price: '$399.99', stocked: false, name: 'iPhone 5'},
  {category: 'Electronics', price: '$199.99', stocked: true, name: 'Nexus 7'}
]

export const ProductCategoryRow = ({
  product: {
    name,
    price
    }
  }) => (<TableRow>
    <TableRowColumn>
      {name}
    </TableRowColumn>
    <TableRowColumn>
      {price}
    </TableRowColumn>
  </TableRow>
)

const ProductHeader = () => (<TableHeader>
    <TableRow>
      <TableHeaderColumn>
        Name
      </TableHeaderColumn>
      <TableHeaderColumn>
        Price
      </TableHeaderColumn>
    </TableRow>
  </TableHeader>
)

export const ProductTableBody = (props) => {
  bin.log(props)
  const Products = props.products.map(product => (<ProductRow product={product} />))
  console.log(Products)
  return Products
}
导出常量产品=[
{类别:'体育用品',价格:'$49.99',库存:真实,名称:'足球'},
{类别:'体育用品',价格:'$9.99',库存:真实,名称:'棒球'},
{类别:'体育用品',价格:'$29.99',库存:假,名称:'篮球'},
{类别:'Electronics',价格:'99.99美元',库存:真实,名称:'iPod Touch'},
{类别:'Electronics',价格:'399.99美元',库存:假,名称:'iphone5'},
{类别:'Electronics',价格:'$199.99',库存:true,名称:'Nexus 7'}
]
出口常量产品类别如下=({
产品:{
名称
价格
}
}) => (
{name}
{price}
)
const ProductHeader=()=>(
名称
价格
)
导出常量ProductTableBody=(道具)=>{
bin.log(道具)
constproducts=props.Products.map(product=>())
console.log(产品)
退货
}
产品表组件由以下组件组成:

//this does not work, the components are passed down to children and nothing happens.
  const ProductTable = (props) => (
    <Table>
      <ProductHeader/>
      <ProductTableBody products={props.products}/>
    </Table>
  )
//这不起作用,组件被传递给子级,什么也没有发生。
const ProductTable=(道具)=>(
)
我有一个网页垃圾箱,你可以看看。我已经注释掉了不起作用的
ProductTable

实现依赖于它的直接子级,它有一个
、一个
,还可以选择一个
组件

如果它至少找不到一个
和一个
,那么它就不会在头/体中呈现任何内容。这就是你现在的处境

解决这个问题的一种方法是将
保持在一起,但使用一些辅助函数来实现类似的抽象级别

const ProductCategoryRow = (props) => {
    const { name, price } = props.product

    return (
        <TableRow>
            <TableRowColumn>
              {name}
            </TableRowColumn>
            <TableRowColumn>
              {price}
            </TableRowColumn>
        </TableRow>
    )
}


function createHeaderColumns(columnNames) {
    return columnNames.map(name => <TableHeaderColumn>{name}</TableHeaderColumn>)
}

function createTableRows(rows) {
    return rows.map(row => <ProductCategoryRow product={row} />)
}

const ProductTable = (props) => {

    const headerColumns = createHeaderColumns(props.columnNames)
    const tableRows = createTableRows(props.products)

    return (
            <Table>
                <TableHeader>
                    <TableRow>
                        {headerColumns}
                    </TableRow>
                </TableHeader>
                <TableBody>
                    {tableRows}
                </TableBody>
            </Table>
    )
}
const ProductCategoryRow=(道具)=>{
const{name,price}=props.product
返回(
{name}
{price}
)
}
函数createHeaderColumns(columnNames){
返回columnNames.map(name=>{name})
}
函数createTableRows(行){
返回rows.map(row=>)
}
const ProductTable=(道具)=>{
const headerColumns=createHeaderColumns(props.columnNames)
const tableRows=createTableRows(props.products)
返回(
{headerColumns}
{tableRows}
)
}