React Presentation Component未从智能组件接收MapDispatchToProps

时间:2017-01-30 18:19:06

标签: javascript reactjs redux react-redux

这真的很奇怪&尴尬&我似乎无法理解这里的错误。

这是' smart'成分:

width: parent.width / 2

这是'演示文稿'成分:

Column

我似乎无法弄清楚为什么 inputs: - name: repo - path: run: path: repo/ args: - npm install - grunt build 没有作为道具传递到组件import { connect } from "react-redux"; import TemplateParent from "../component/svg/TemplateParent"; import { setInitialViewBox } from "../modcon/Actions"; const mapStateToProps = ({ svgTemplateState }) => { return({ renderType : "Template Selection", svgTemplateState : svgTemplateState }); }; const mapDispatchToProps = ( dispatch ) => { return({ dispatchSetInitialViewBox : ( viewBoxCoOrdinates ) => { dispatch( setInitialViewBox( viewBoxCoOrdinates )); } }); }; const C_TemSelectionSVGTemplate = connect( mapStateToProps, mapDispatchToProps )( TemplateParent ); export default C_TemSelectionSVGTemplate;

根据要求,这是行动创建者import React from "react"; import { calcViewBoxCentre } from "../../modcon/GlobalAPI"; const TemplateParent = React.createClass({ componentDidUpdate : function(){ let getEleDimension = this.gEle.getBBox(), viewboxValue = calcViewBoxCentre( getEleDimension, 1.75 ); /*** ERROR IS HERE: this.props.dispatchSetInitialViewBox is not a function ***/ this.props.dispatchSetInitialViewBox( viewboxValue ); }, render : function(){ /*** the below console logs only shows two props: `renderType` & `svgTemplateState` ***/ console.log( this.props ); return( <g className = "templateParent" ref = {( g ) => this.gEle = g }> </g> ); } });

mapDispatchToProps

2 个答案:

答案 0 :(得分:0)

我看了你的代码而我没有发现你的问题, 但我有一些注意事项:

您不应在mapDispatchToProps中传递参数viewBoxCoOrdinates。 你可以检查 bindActionCreators 可能是解决方案 例如:

import {bindActionCreators} from 'react-redux';
const mapDispatchToProps = ( dispatch ) => {
    return({
        dispatchSetInitialViewBox : bindActionCreators(viewBoxCoOrdinates, dispatch)
        }
    });
};

您可以通过props.dispatchSetInitialViewBox();

访问您的函数

更多信息:bindActionCreators

答案 1 :(得分:0)

您可以使用简写表示法将调度映射到这样的道具:

export default connect( mapStateToProps, { setInitialViewBox })( TemplateParent );

在您的组件中,您可以this.props.setInitialViewBox