I am getting into React and I can not find out, how we should define React components.
Should we use ES6 class definition like following:
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
or do it like following:
export const DateFormatter = ({ date }) => (
<div>
<h2>It is {date.toLocaleTimeString()}</h2>
</div>
)
DateFormatter.propTypes = {
date: PropTypes.object
};
export default DateFormatter
Both ways presented above are working properly but I can not get what is the main difference (except semantical)? I know that in second case we create immutable component as it is defined as "const".