javascript - this.props 返回未定义?

标签 javascript reactjs components

我目前正在通过 props 将数据传递到我的组件中,由于某种原因,它显示为未定义。 从我的父组件 Angular 来看,我有以下第 2 遍 Prop :dataheader

class ContractTable extends Component {
constructor(props) {
    super(props);
    this.state = {
        data: []
    };
}

render() {
    return (
        <div>
            <p></p>
            <MuiThemeProvider>
                <TableTest
                    data={this.state.data}
                    header={[
                        {
                            name: "First Name",
                            prop: "firstName"
                        },
                        {
                            name: "Last Name",
                            prop: "lastName"
                        },
                        {
                            name: "Age",
                            prop: "age"
                        },
                        {
                            name: "Height",
                            prop: "height"
                        },
                        {
                            name: "Address",
                            prop: "address"
                        }
                    ]}
                />
            </MuiThemeProvider>
            <p></p>
        </div>
    );
}

我尝试获取 Prop 并将其设置为我的状态,但是当我记录 this.props.datathis.props.header 时,它返回未定义。为什么是这样?

import React, { Component } from 'react';
import {
Table,
TableBody,
TableHeader,
TableHeaderColumn,
TableRow,
TableRowColumn,
} from 'material-ui/Table';

class TableTest extends Component {
constructor(props) {
    super(props);

    this.state = {
        data: props.data,
        header: props.header
    }

    this.row = this.row.bind(this);
}

row = (currentValue, index, header) => (
    <TableRow key={`t-${index}`}>
        {
            header.map((headerName, index) => (
                <TableRowColumn key={`trc-${index}`}>
                    {currentValue[headerName.prop]}
                </TableRowColumn>
            ))
        }
    </TableRow>
);

render() {
    return 'hello'
}
}

export default TableTest;

最佳答案

更新:看看 https://jsfiddle.net/nroLmghv/

刚刚渲染了简单的表头。

将 props 传递给 state 并不是一个好方法。

<小时/>

我创建了一个片段。它看起来很有效。看看你哪个地方有问题。或者提供 MuiThemeProviderTableTest 完整代码。

class Example extends React.Component {
    constructor(props) {
        super(props)       
        this.state = {
            // mock value
            data: "some value"
        }
  }

  render() {
    return <div>
      <TableTest
         data={this.state.data}
         header={[
        {
            name: "First Name",
            prop: "firstName"
        },
        {
            name: "Last Name",
            prop: "lastName"
        },
        {
            name: "Age",
            prop: "age"
        },
        {
            name: "Height",
            prop: "height"
        },
        {
            name: "Address",
            prop: "address"
        }
    ]}
    />
    </div>;
  }
}

class TableTest extends React.Component {
    constructor(props) {
        super(props);        
        this.state = {
            data: this.props.data,
            header: this.props.header
        }  
    
        console.log(this.state.data)
        console.log(this.state.header)
    }
  
    render() {
        return <div></div>;
    }
}

ReactDOM.render(
  <Example />,
  document.getElementById('root')
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root">
</div>

关于javascript - this.props 返回未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47710825/

相关文章:

matlab - Matlab主成分回归(pcr)分析中的常数项

javascript - 如何在 javascript 中以 unix 格式获取昨天的日期?

javascript - Angular ngStyle 解析器错误 : Unexpected token [, 需要标识符或关键字

javascript - array.filter 参数仅在包裹在 {} 周围时才有效

vector - 具有 32 位向量的 VHDL OR 逻辑

android - 如何在 Jetpack Compose 中制作可重用的组件?

javascript - Firebase onDisconnect 如何触发其他功能

javascript - 如何使用 thunk 操作对 mapDispatchToProps 进行单元测试

javascript - yarn 工作区和无效的 Hook 调用

javascript - React 中的输入字段没有变化(受控输入)