2017-01-30 9 views
0

これは本当に変です& awkward &私はここで何が間違っているのか分かりません。ここでReact PresentationコンポーネントがSmartDomponentからMapDispatchToPropsを受信しない

は「スマート」コンポーネントです:

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が小道具として渡されていない理由を把握するように見えるカントコンポーネントTemplateParentに転送します。

要求されたとして、ここでは、アクションの作成者setInitialViewBoxです:

export const setInitialViewBox = (viewBox) => { 
    return({ 
     type : SET_INITIAL_VIEWBOX, 
     svgPayload : { 
      defaultTab : { 
       viewBox : viewBox, 
       scale : 1 
      }, 
      bodyTab : { 
       viewBox : viewBox, 
       scale : 1 
      }, 
      sleeveTab : { 
       viewBox : viewBox, 
       scale : 1 
      } 
     } 
    }); 
}; 
+0

必ずしも関連はありませんが、TemplateParentコンポーネントをエクスポートしていますか? – Pineda

+0

はい私はそうです。私はプレゼンテーションコンポーネント 'TemplateParent'を単純化しなければなりませんでした。そこではいくつかの計算が行われています。しかし、はい、 'デフォルトのTemplateParentをエクスポートしています ' – Kayote

+0

' setInitialViewBox'アクションを表示 – lux

答えて

0

私はあなたのコードを読んで、私はあなたの問題をキャッチしていないよ、 しかし、私はいくつかの注意を持っている:

あなたはあなたを渡すべきではありませんmapDispatchToPropsのパラメータviewBoxCoOrdinates )(

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

そして、あなたはprops.dispatchSetInitialViewBoxして機能にアクセスすることができます;: あなたはソリューション exempleかもしれbindActionCreatorsを確認することができます

以上に関する情報:bindActionCreators

+0

しかし、答えをありがとう、私はこのコードにもたらすどんな利益を確認していない。私のコードでは、 'TemplateParent'は認識しやすいので、' viewBoxCoOrdinates'を渡すことに何か問題があるはずがないと思います。 Imが何かを見逃しているなら、私を修正してください私はダンの上記のページを読んだが、利益を見失うことはない。 – Kayote

0

あなたはこのような小道具に派遣をマップするために省略表記を使用することができます。

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

そして、あなたのコンポーネントにあなたはthis.props.setInitialViewBoxを行うことができます。

関連する問題