gpt4 book ai didi

javascript - 使用 react-redux 将调度函数映射到属性

转载 作者:行者123 更新时间:2023-11-30 15:56:16 25 4
gpt4 key购买 nike

如何访问通过 react-redux connect 方法传递给组件的调度函数?如果我尝试通过 this.props 访问回调。找不到该功能。显示以下错误:Required prop onDataUpdated was not specified in EditTable and TypeError: this.props.onDataUpdated is not a function

ConsumerIDManagement.js

import { connect } from 'react-redux'
var React = require('react');
var EditTable = require("../components/EditTable");

const ConsumerIDEditTable = connect(
mapDispatchToProps
)(EditTable)

const mapDispatchToProps = (dispatch, ownProps) => {
return {
onDataUpdated: (oldRow,newRow) => {
dispatch({ oldRow: oldRow, newRow: newRow,type: "onRowUpdated"})
}
}
}

<ConsumerIDEditTable data={this.state.data} editableColumns={["consumerID"]}/>

EditTable.js

var React = require('react');
var ReactDataGrid = require('react-data-grid');
var ResultFormatter = require("../components/ResultFormatter");

var EditTable = React.createClass({
propTypes: {
onDataUpdated: React.PropTypes.func.isRequired
},
...
handleRowUpdated : function(e){
var rows = this.state.rows;

// inform dispatcher of changed data
this.props.onDataUpdated(rows, e.updated);
},
...
},

render:function(){
return (
<ReactDataGrid
...
onRowUpdated={this.handleRowUpdated} />
)
}

});


module.exports = EditTable;

最佳答案

connect 方法具有以下签名:
connect([mapStateToProps], [mapDispatchToProps], [mergeProps], [选项])

  1. [mapStateToProps(state, [ownProps]): stateProps](函数)
  2. [mapDispatchToProps(dispatch, [ownProps]): dispatchProps](对象或函数)

您需要将您的mapDispatchToProps 函数作为第二个 参数传递

const ConsumerIDEditTable = connect(
null, mapDispatchToProps
)(EditTable)

更多信息在 docs

您还可以在使用后使用 const 声明 mapDispatchToProps。当您调用connect 方法时,它是undefinedconstlet 没有被提升到文档的顶部,这意味着您不能在使用它们之后定义它们。

const value1 = 'value1';
console.log(value1, value2)
const value2 = 'value2';

关于javascript - 使用 react-redux 将调度函数映射到属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38482392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com