Javascript 如何将组件道具从React传递到Redux?

Javascript 如何将组件道具从React传递到Redux?,javascript,reactjs,redux,Javascript,Reactjs,Redux,当我试图通过connect将组件(从Table组件)的道具(只是一个字符串)传递给redux时,我经常收到一条错误消息 我得到的错误输出是: TypeError:无法读取未定义的属性“props” 在具有道具的组件中调用表组件: <Table data = {'contacts'} tableHead = {'contactsKeyNames'}/> 我试图通过如下设置构造函数将其绑定到道具,但没有成功 constructor(props){ super(props)

当我试图通过connect将组件(从Table组件)的道具(只是一个字符串)传递给redux时,我经常收到一条错误消息

我得到的错误输出是:

TypeError:无法读取未定义的属性“props”

在具有道具的组件中调用表组件:

<Table data = {'contacts'} tableHead = {'contactsKeyNames'}/>
我试图通过如下设置构造函数将其绑定到道具,但没有成功

constructor(props){
    super(props) 

    this.props = this.props.bind(this)
  }
我做错了什么? 救命啊

看一看。您需要使用ownProps参数来访问tableHead:

const getTableData = (state, ownProps) =>{
  return{
   fieldNames: state[ownProps.tableHead]
  }
};

您还应该确保您的组件已正确注册并通过了提供程序。

使用MapStateTrops更为惯用,因此很容易了解发生了什么。另外,为什么不直接添加contactsKeyNames,如下所示:

const mapStateToProps = (state, ownProps) => ({
  contactsKeyNames: state.contactsKeyNames
})
在我看来,这是更容易遵循

然后,您可以参考contactsKeyNames,如下所示:

class Table extends React.Component{
  render() {
    const { contactsKeyNames } = this.props;
    ...

好极了很高兴在您的getTableData中对此有所帮助,因为它没有引用您的组件实例。我认为你不需要构造器,我正在尝试将表组件模块化,以便它可以作为传递到它上的任何数据的数据表
const getTableData = (state, ownProps) =>{
  return{
   fieldNames: state[ownProps.tableHead]
  }
};
const mapStateToProps = (state, ownProps) => ({
  contactsKeyNames: state.contactsKeyNames
})
class Table extends React.Component{
  render() {
    const { contactsKeyNames } = this.props;
    ...