【问题标题】:Transform Function Component -> Class Component变换函数组件 -> 类组件
【发布时间】:2018-11-16 15:40:23
【问题描述】:

如何将这个函数补充转化为类组件

const SyncValidationForm = (props) => {
  const { handleSubmit, pristine, reset, submitting } = props
  return (
    <form className ="formmailforbook" onSubmit={handleSubmit(submit)}>

      <Field name="email" type="email" component={renderField} label="Email"/>
      <div>
        <button className ="hero_button margin_left" type="submit" disabled={submitting}>Submit</button>
      </div>
    </form>
  )
}

【问题讨论】:

    标签: reactjs components constants


    【解决方案1】:

    这非常简单.. 将代码复制到新文件并添加 export defaultbefore const 类似这样的内容。

    export default const SyncValidationForm
    

    在您需要组件的任何地方导入其他组件时导入文件,并将导入的名称用作 jsx 名称作为常用名称并提供道具。

    【讨论】:

      【解决方案2】:

      翻译很简单,你可以在render 方法中做同样的道具解构。唯一轻微的变化是现在它从this.props拉出来了:

      import React, { Component } from 'react';
      
      export default class SyncValidationForm extends Component {
        render () {
          const { handleSubmit, pristine, reset, submitting } = this.props;
          return (
            <form className ="formmailforbook" onSubmit={handleSubmit(submit)}>
      
              <Field name="email" type="email" component={renderField} label="Email"/>
              <div>
                <button className ="hero_button margin_left" type="submit" disabled={submitting}>Submit</button>
              </div>
      
            </form>
          )
        }
      }
      

      【讨论】:

      • 当我使用它解决方案时,应用程序呈现,但出现错误:invariant.js:42 Uncaught Error: addComponentAsRefTo(...): Only a ReactOwner can have refs.您可能正在向组件添加一个 ref,该组件不是在组件的 render 方法中创建的,或者您加载了多个 React 副本
      猜你喜欢
      • 2021-12-16
      • 2020-12-12
      • 2021-11-24
      • 2022-01-17
      • 2020-01-02
      相关资源
      最近更新 更多