Case I is creating Stateless Functional Components, as a rule of thumb it's recommended to use it whenever possible. Case II is useful for example if you need to use this
or if you need life-cycle methods.
Check this great post to learn more: http://jamesknelson.com/should-i-use-react-createclass-es6-classes-or-stateless-functional-components/
From the official docs:
The simplest way to define a component
is to write a JavaScript function:
function Welcome(props) {
return <h1>Hello, {props.name}</h1>;
}
This function is a valid React component because it accepts a single
"props" object argument with data and returns a React element. We call
such components "functional" because they are literally JavaScript
functions.
You can also use an ES6 class to define a component:
class Welcome extends React.Component {
render() {
return <h1>Hello, {this.props.name}</h1>;
}
}
The above two components are equivalent from React's point of view.
Classes have some additional features that we will discuss in the next
sections. Until then, we will use functional components for their
conciseness.
source: https://facebook.github.io/react/docs/components-and-props.html#functional-and-class-components