Presentation (Dumb) components
sont comme des étudiants de première année, ils ont leur apparence unique mais leur comportement et le contenu qu'ils émettent sont décidés ou enseignés par leurs parents. Exemple: <Button />
export const Button = props => {
<button type="button" onClick={props.onClick} />{props.text}</button>
}
apparence unique: il est un bouton
Comportement: onClick
Contenu: texte
Les deux onClick et les textes sont fournis par les parents.
Quand ils grandissent au 5ème ou 7ème année, ils peuvent commencer à avoir leur propre state
et décider quelques-unes des choses eux-mêmes. Exemple: <Input />
class Input extends Component {
constructor(props) {
super(props);
this.state = {
value: ''
}
}
handleChange = (e) => {
this.setState({value: e.target.value});
}
render() {
return (
<input
type="text"
value={this.state.value}
onChange={this.handleChange}
onFocus={this.props.onFocus}
/>
);
}
}
apparence unique: il est une entrée
Etat: décide propre valeur.
Comportement: onFocus
onFocus fourni par le parent.
Et quand ils deviennent adultes, ils peuvent commencer à se comporter eux-mêmes et ne peuvent pas besoin leurs conseils aux parents. Ils commencent à parler au monde extérieur (magasin de redux) par eux-mêmes (maintenant ils sont de nouveaux composants de conteneur). Exemple
const mapStateToProps = (state, [ownProps]) => {
...
}
const mapDispatchToProps = (state, [ownProps]) => {
...
}
const MyComponent = (props) => {
return (
<ChildComponent {...props} />
);
}
connect(mapStateToProps, mapDispatchToProps)(MyComponent);
décide de son propre comportement et le contenu, ou non besoin de parents (lire ownProps)
composants présentationnelle peuvent ou peuvent ne pas avoir besoin de tout comportement de leur propre, dont ils dépendent leurs parents pour ça. Mais pour parler (expédier) au monde extérieur (magasin) ils doivent être assez grands (composants de conteneur).Donc, la principale chose à retenir ici est petit commencer et décider que votre composant se développe s'il doit être un composant de présentation ou de conteneur.
Votre conteneur serait au courant de redux; vos composants ne le seront pas. Ils devraient être bêtes et peuvent être utilisés par un composant parent qui gère l'état par lui-même ou par un conteneur parent lié à Redux. – palsrealm