Reactjs React的两种组件定义方式的差异

Reactjs React的两种组件定义方式的差异,reactjs,ecmascript-6,components,Reactjs,Ecmascript 6,Components,我正在学习React,但我不知道应该如何定义React组件 我们是否应该使用ES6类定义,如下所示: import React from 'react' import PropTypes from 'prop-types' class DateFormatter extends React.Component { constructor (props) { super(props) this.date = props.date } render () { r

我正在学习React,但我不知道应该如何定义React组件

我们是否应该使用ES6类定义,如下所示:

import React from 'react'
import PropTypes from 'prop-types'

class DateFormatter extends React.Component {
  constructor (props) {
    super(props)
    this.date = props.date
  }
  render () {
    return (<h2>It is {this.date.toLocaleTimeString()}.</h2>
    )
  }
}
DateFormatter.propTypes = {
  date: PropTypes.object
}

export default DateFormatter
export const DateFormatter = ({ date }) => (
  <div>
    <h2>It is {date.toLocaleTimeString()}</h2>
  </div>
)
DateFormatter.propTypes = {
  date: PropTypes.object
};

export default DateFormatter
var DateFormatter = function({date}) {
  return <div><h2>It is {date.toLocaleTimeString()}</h2></div>;
}

DateFormatter.propTypes = {
  date: PropTypes.object
};

export default DateFormatter
从“React”导入React
从“道具类型”导入道具类型
类DateFormatter扩展了React.Component{
建造师(道具){
超级(道具)
this.date=props.date
}
渲染(){
return(它是{this.date.toLocaleTimeString()})。
)
}
}
DateFormatter.propTypes={
日期:PropTypes.object
}
导出默认日期格式化程序
或者像下面这样做:

import React from 'react'
import PropTypes from 'prop-types'

class DateFormatter extends React.Component {
  constructor (props) {
    super(props)
    this.date = props.date
  }
  render () {
    return (<h2>It is {this.date.toLocaleTimeString()}.</h2>
    )
  }
}
DateFormatter.propTypes = {
  date: PropTypes.object
}

export default DateFormatter
export const DateFormatter = ({ date }) => (
  <div>
    <h2>It is {date.toLocaleTimeString()}</h2>
  </div>
)
DateFormatter.propTypes = {
  date: PropTypes.object
};

export default DateFormatter
var DateFormatter = function({date}) {
  return <div><h2>It is {date.toLocaleTimeString()}</h2></div>;
}

DateFormatter.propTypes = {
  date: PropTypes.object
};

export default DateFormatter
export const DateFormatter=({date})=>(
它是{date.toLocaleTimeString()}
)
DateFormatter.propTypes={
日期:PropTypes.object
};
导出默认日期格式化程序
上述两种方法都能正常工作,但我不知道主要区别是什么(语义除外)?我知道在第二种情况下,我们创建了定义为“const”的不可变组件。

export-const-DateFormatter=({date})=>(
它是{date.toLocaleTimeString()}
)
DateFormatter.propTypes={
日期:PropTypes.object
};
导出默认日期格式化程序
这是一个功能组件。它没有状态。它只是渲染它所输入的数据(通过道具)

从“React”导入React
从“道具类型”导入道具类型
类DateFormatter扩展了React.Component{
建造师(道具){
超级(道具)
this.date=props.date
}
渲染(){
return(它是{this.date.toLocaleTimeString()})。
)
}
}
DateFormatter.propTypes={
日期:PropTypes.object
}
导出默认日期格式化程序
这是一个类组件。它有一个状态,通常比功能组件更复杂


通常,在组件层次结构的顶部会有一些类组件。你越往下走,你就会发现更多的功能组件。它们呈现从类组件传递下来的数据。

是的,它是复制的post,但为了最终澄清,此符号是函数符号:

export const DateFormatter = ({ date }) => (
  <div>
    <h2>It is {date.toLocaleTimeString()}</h2>
  </div>
)
DateFormatter.propTypes = {
  date: PropTypes.object
};

export default DateFormatter
export const DateFormatter=({date})=>(
它是{date.toLocaleTimeString()}
)
DateFormatter.propTypes={
日期:PropTypes.object
};
导出默认日期格式化程序
与以下各项相等:

import React from 'react'
import PropTypes from 'prop-types'

class DateFormatter extends React.Component {
  constructor (props) {
    super(props)
    this.date = props.date
  }
  render () {
    return (<h2>It is {this.date.toLocaleTimeString()}.</h2>
    )
  }
}
DateFormatter.propTypes = {
  date: PropTypes.object
}

export default DateFormatter
export const DateFormatter = ({ date }) => (
  <div>
    <h2>It is {date.toLocaleTimeString()}</h2>
  </div>
)
DateFormatter.propTypes = {
  date: PropTypes.object
};

export default DateFormatter
var DateFormatter = function({date}) {
  return <div><h2>It is {date.toLocaleTimeString()}</h2></div>;
}

DateFormatter.propTypes = {
  date: PropTypes.object
};

export default DateFormatter
var DateFormatter=函数({date}){
返回值为{date.toLocaleTimeString()};
}
DateFormatter.propTypes={
日期:PropTypes.object
};
导出默认日期格式化程序

是的,非常感谢!