2016-11-19 2 views
0

Каков рекомендуемый способ обработки redux-form/CHANGE действий, отправленных редукцией? У меня есть мой собственный редуктор управления состоянием этого вида, но я не уверен, если это лучше сделать следующее:Как обращаться с редукционной формой/CHANGE в редукторе

export default reducer (state = initialState, action) { 
    case 'redux-form/CHANGE': 
    // return modified state 
} 

Одна проблема, которую я вижу, что это редуктор получит каждыйredux-form/CHANGE действия. Кроме того, насколько я могу судить, ActionTypes.js не экспортируется таким образом, чтобы я мог его импортировать, поэтому я чувствую, что это может быть не самая лучшая практика.

ответ

3

Вы можете использовать redux-form создателей действий. Вам просто нужно подключить его к вашему компоненту.

Так что в вашем /components/MyComponent.js

import React from 'react'; 
import { connect } from 'react-redux'; 
import { change } from 'redux-form'; 

class MyComponent extends React.Component { 
    ... 
    render() { 
     return <div> 
      <button onClick={this.props.change('formName', 'fieldName', 'value')}>Change</button> 
     </div> 
    } 
} 

const mapStateToProps = (state, ownProps) => { ... } 
export default connect(mapStateToProps, { change })(MyComponent); 

Вы можете также использовать redux-form редуктор и расширяет его к вашим потребностям ...

В ваших reducers/index.js]

import { reducer as form } from 'redux-form'; 

const formPlugin = { 
    formName: (state, action) => { 
     ...reducer logic 
     return newState; 
    } 
} 

const rootReducer = combineReducers({ 
    ...other reducers, 
    form: form.plugin(formPlugin) 
}); 
+0

Спасибо за ваше предложение, я есть решение для моей аналогичной проблемы. https://stackoverflow.com/questions/46461103/how-to-stop-redux-forms-form-state-from-auto-rehydrated-by-redux-persit –