Czy w React są jakieś rzeczywiste różnice między tymi dwiema implementacjami? Niektórzy znajomi mówią mi, że FirstComponent jest wzorem, ale nie rozumiem dlaczego. SecondComponent wydaje się prostszy, ponieważ renderowanie jest wywoływane tylko raz.
Pierwszy:
import React, { PropTypes } from 'react'
class FirstComponent extends React.Component {
state = {
description: ''
}
componentDidMount() {
const { description} = this.props;
this.setState({ description });
}
render () {
const {state: { description }} = this;
return (
<input type="text" value={description} />
);
}
}
export default FirstComponent;
Druga:
import React, { PropTypes } from 'react'
class SecondComponent extends React.Component {
state = {
description: ''
}
constructor (props) => {
const { description } = props;
this.state = {description};
}
render () {
const {state: { description }} = this;
return (
<input type="text" value={description} />
);
}
}
export default SecondComponent;
Aktualizacja: Zmieniłem setState () na this.state = {} (dzięki joews), Jednak nadal nie widzę różnicy. Czy jedno jest lepsze od drugiego?
this.state = { isVisible: props.isVisible }
ma to sens. Zależy od tego, jak aplikacja dystrybuuje stan interfejsu użytkownika.