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