没有ES6模块的React

时间:2016-10-26 11:47:30

标签: reactjs playframework ecmascript-6 render

我目前正在使用Scala,Play框架和React示例代码,并在尝试将以下代码转换为在浏览器中加载而不使用ES6模块系统时遇到了问题。这意味着我无法使用export default

如何在ES6中重写以下内容,以便在没有export default的情况下将其加载到客户端?我是否必须将其分解为一个类和一个返回render的函数?

export default function form({
  fields: defaultFds = [],
  validate: defaultVal = () => ({}),
} = {}) {
  return (WrappedClass) => class Form extends React.Component {
    static defaultProps = {
      fields: defaultFds,
      validate: defaultVal,
    }

    static childContextTypes = {
      form: PropTypes.object,
      fields: PropTypes.object,
    }

    static propTypes = {
      fields: PropTypes.array,
      validate: PropTypes.func,
      value: PropTypes.object,
      onChange: PropTypes.func,
      onValidate: PropTypes.func,
    }

    state = {
      touched: {},
      errors: {},
      valid: undefined,
    }

    render() {
      const { value, onChange, onValidate, validate, fields, ...otherProps } = this.props;
      return <WrappedClass {...otherProps} {...this.generatedProps()} />;
    }
  } 
}

1 个答案:

答案 0 :(得分:0)

你必须在这里重写整个事情......因为如果你不能使用ES6,你需要担心的事情比export default还要多 - 所有的功能都是用() =>需要重写,您可能无法使用JSX。

您是否阅读了有关该主题的React docs