加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

reactjs – ReduxForm装饰器,弹出create-react-app后没有类分配

发布时间:2020-12-15 09:33:18 所属栏目:百科 来源:网络整理
导读:我最近弹出了我的create-react-app,我收到ReduxForm的错误,阻止了webpack编译.这是错误:“错误’NewComplaintModal’是一个类no-class-assign”.它似乎与底部的redux表单装饰器相关联,但我在redux-form文档中找不到任何其他实现.知道如何解决这个问题吗? i
我最近弹出了我的create-react-app,我收到ReduxForm的错误,阻止了webpack编译.这是错误:“错误’NewComplaintModal’是一个类no-class-assign”.它似乎与底部的redux表单装饰器相关联,但我在redux-form文档中找不到任何其他实现.知道如何解决这个问题吗?

import React,{ Component } from 'react';
import { connect } from 'react-redux';
import { bindActionCreators } from 'redux';
import * as Actions from '../actions';
import { Field,reduxForm } from 'redux-form';
import DatePicker from "react-bootstrap-date-picker";

class NewComplaintModal extends Component {
  close() {
    this.props.actions.hideModal();
  }

  handleFormSubmit(formProps) {
    this.props.actions.submitComplaint(formProps);
  }

  render(){
    const { handleSubmit } = this.props;

    const show = this.props.modalType ? true : false;

    const RenderDatePicker = ({input,meta: {touched,error} }) => (
      <div>
        <DatePicker showClearButton={false} {...input} />
        {touched && error && <span>{error}</span>}
      </div>
    );

    return(
      <div>
        ...
      </div>
    )
  }
}

NewComplaintModal = reduxForm({
  form: 'newComplaintModal'
})(NewComplaintModal);


function mapStateToProps(state) {
  return {
    modal: state.modal
  };
}

function mapDispatchToProps(dispatch) {
  return {
    actions: bindActionCreators(Actions,dispatch)
  };
}

export default connect(mapStateToProps,mapDispatchToProps)(NewComplaintModal)

解决方法

首先,你要声明一个名为NewComplaintModal的类

class NewComplaintModal extends Component {
  ...
}

然后,你正在处理你的NewComplaintModal,这是一个类声明,就像它是一个变量,如下所示:

NewComplaintModal = reduxForm({
  form: 'newComplaintModal'
})(NewComplaintModal);

这就是为什么你会看到特定的错误,即抱怨正在重新分配一个类.要解决这个问题,我建议在连接之前跳过使用reduxForm装饰器的中间步骤,并使用装饰器语法链接它们:

import React,reduxForm } from 'redux-form';
import DatePicker from "react-bootstrap-date-picker";

export class NewComplaintModal extends Component {
  close() {
    this.props.actions.hideModal();
  }

  handleFormSubmit(formProps) {
    this.props.actions.submitComplaint(formProps);
  }

  render(){
    const { handleSubmit } = this.props;

    const show = this.props.modalType ? true : false;

    const RenderDatePicker = ({input,error} }) => (
      <div>
        <DatePicker showClearButton={false} {...input} />
        {touched && error && <span>{error}</span>}
      </div>
    );

    return(
      <div>
        ...
      </div>
    )
  }
}

function mapStateToProps(state) {
  return {
    modal: state.modal
  };
}

function mapDispatchToProps(dispatch) {
  return {
    actions: bindActionCreators(Actions,dispatch)
  };
}


// use decorators around an extension of your component
// to plug into redux and redux-form
@connect(mapStateToProps,mapDispatchToProps)
@reduxForm({ form: 'newComplaintModal' })
export default class NewComplaintModalContainer extends NewComplaintModal {}

如果您不想使用装饰器语法,可以执行以下操作:

export default connect(mapStateToProps,mapDispatchToProps)(
  reduxForm({ form: 'newComplaintModal' })(
    NewComplaintModal
  )
)

这种方法基本上将组件与类似配置的元素隔离开来,即与应用程序状态交互相关的任何内容.

希望这可以帮助!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读