2017-02-01 10 views
0

私はTS2300: Duplicate identifier 'UIBuilderForm'.例外を持っています。HOC HOP構文の字形

私はUIBuilderForm

にHOC(高次成分)を適用しようとしていたES6でtypescriptですにこの構文を使用する正しい方法は何ですか?

class UIBuilderForm extends React.Component<any, {}> { 
     ... 
    } 


    let UIBuilderForm :any = reduxForm({ 
     form: FORM_NAME 
    })(UIBuilderForm as any); 

    const selector = formValueSelector(FORM_NAME) // 

    let UIBuilderForm = connect(
     formStates 
    )(UIBuilderForm) 

    ??? UIBuilderForm = connect(
     mapStateToProps, 
     mapDispatchToProps 
    )(UIBuilderForm) 


    export default UIBuilderForm 
+1

あなただけの他のあなたの新しいものの何かに名前を付ける必要があるあなたは再利用しているため、誤差があるlet sが異なる名前を選択するか、省略のどちらか元のコンポーネントと同じ名前、 'reduxForm'と' connect'呼び出しの結果です。 – loganfsmyth

+0

割り当てはうまくいきました。あなたは 'let'宣言を省略するだけです。 – Bergi

答えて

1

あなたは許可されていません同じ変数名、用の2つのletと1 class宣言を持っています。

class UIBuilderForm extends React.Component<any, {}> { 
    ... 
} 

UIBuilderForm = reduxForm({ 
    form: FORM_NAME 
})(UIBuilderForm); 

const selector = formValueSelector(FORM_NAME) // 

UIBuilderForm = connect(
    formStates 
)(UIBuilderForm) 

UIBuilderForm = connect(
    mapStateToProps, 
    mapDispatchToProps 
)(UIBuilderForm) 

export default UIBuilderForm; 

それとも一つの大きな表現にすべてをかける:

const selector = formValueSelector(FORM_NAME); 

export default connect(
    mapStateToProps, 
    mapDispatchToProps 
)(connect(
    formStates 
)(reduxForm({ 
    form: FORM_NAME 
})(class UIBuilderForm extends React.Component<any, {}> { 
    ... 
})));