2016-10-26 10 views
0

以下の例ではmapDispatchToPropsを使用して、save()アクションクリエーターにonSubmitイベントをバインドしています。これは動作します - save()アクションクリエータはコンソールにメッセージを記録します。Redux-FormディスパッチはAction Creatorを呼び出しますが、リデューサーは決してアクションを受け取りません。

問題は、引き続き 'TEST_SAVE'アクションをディスパッチしないことです。つまり、レデューサーはタイプ 'TEST_SAVE'のアクションを受け取ることはありません。

私は以下のように働くバニラレキシックスフォームを持っていますが、私はレフィックスフォームには新しく、何が間違っているのだろうか?

const reducers = { 
    // ... your other reducers here ... 
    form: formReducer.plugin({ 
    contact: (state, action) => { 
     switch(action.type) { 
     case 'TEST_SAVE': 
      return state; 
     default: 
      return state; 
     } 
    } 
    }) 
}; 
const reducer = combineReducers(reducers); 
const store = createStore(reducer); 


function mapDispatchToProps(dispatch) { 
    return { 
    onSubmit: (val) => dispatch(actionCreators.save(val)), 
    } 
} 

var actionCreators = { 
    save: (value) => { 
    console.log('SAVE action done!'); 
    return {type: 'TEST_SAVE', value}; 
    }, 
}; 

const MyContactForm = connect(
    mapDispatchToProps 
)(ContactForm) 


<Provider store={store}> 
    <MyContactForm /> 
</Provider> 

のContactFormクラスの抜粋:

class ContactForm extends Component { 

    render() { 
    const { error, handleSubmit, pristine, reset, submitting } = this.props; 

    return (
     <form 
     onSubmit={handleSubmit} 
     > 

    .... 

    ) 

    } 
} 

ContactForm = reduxForm({ 
    form: 'contact' 
})(ContactForm); 

答えて

1
const MyContactForm = connect(
    mapDispatchToProps 
)(ContactForm) 

connect()の最初のパラメータは、mapStateToProps、ないmapDispatchToPropsあります。必要があります:

const MyContactForm = connect(
    undefined, // <------------- mapStateToProps 
    mapDispatchToProps 
)(ContactForm) 
+0

ああ、そのような明白で簡単なことは、後で知っている。ありがとう、エリック - 答えのために間違いなく、そして図書館も! – markau

1

減速内breakを使用しないでください。常に状態オブジェクトを返します。

+0

通知と更新。ありがとう。 – markau

関連する問題