Действие отправки при создании компонента - PullRequest
0 голосов
/ 03 октября 2018

У меня есть такой компонент:

class FormItem extends React.PureComponent {

    constructor(props){
        super();
        props.dispatch(setFormCreated(props.formBuilder, props.formId)); 
    }

   render(){
       ...
   }
}

const mapStateToProps = state => {
    return {
        doValidation: state.formsReducer.validationRequested
    };
};

const mapDispatchToProps = dispatch => ({
    onValidationSucceed: formId =>  dispatch(setFormValidationSucceed(formId)),
    onValidationFailed: formId => dispatch(setFormValidationFailed(formId))
});

export default connect(mapStateToProps, mapDispatchToProps)(FormItem);

Я хочу отправить действие при создании компонента.Строка 5:

props.dispatch(setFormCreated(props.formBuilder, props.formId)); 

Но я получил:

Ошибка ввода: props.dispatch не является функцией

Ответы [ 2 ]

0 голосов
/ 03 октября 2018
const mapDispatchToProps = dispatch => ({
    onValidationSucceed: formId =>  dispatch(setFormValidationSucceed(formId)),
    onValidationFailed: formId => dispatch(setFormValidationFailed(formId))
    onFormCreated: (formBuilder, formId) => dispatch(setFormCreated(formBuilder, formId))
});

В вашем компоненте вы можете использовать следующее (я бы поместил ваш код в componentDidMount).Это также предполагает, что вы передаете formBuilder и formId в качестве реквизита.

componentDidMount() {
  const { onFormCreated, formBuilder, formId } = this.props;
  onFormCreated(formBuilder, formId)
} 
0 голосов
/ 03 октября 2018

Перед тем, как использовать реквизиты внутри конструктора, вам необходимо передать реквизиты super:

super(props);
...