Ich versuche, die Best Practices von ReactJS bei der Verwendung von Zustandskomponenten zu befolgen, wenn Statusänderungen möglich sind, und repliziert, wenn eine Komponente zustandslos ist, aber ich weiß nicht, wie ich das soll Strukturiere meine Komponenten, um beide Typen zuzulassen. Derzeit hole ich eine JSON-Datei und setze die einzelnen Objekte in einer Zustandskomponente und dann möchte ich das Design und Layout dieser Informationen mit individuellen Propkomponenten für jede Information strukturieren, was meiner Meinung nach die beste Vorgehensweise ist, aber die Prop-Komponenten geben Fehler aus, dass die übergebene Eigenschaft undefined
ist. Ist dies ein Eltern/Kind-Problem?ReactJS - Rückgabeobjekt vom Status an Prop übergeben
Hier ist meine Ansicht Feed (Top-Level, gemacht zu werden):
export default class CommentFeed extends React.Component {
render() {
return (
<div className="comment-feed">
<Comments />
</div>
);
}
}
meine damaligen und als Staat Komponente gesetzt Abruf:
//Comments List
class Comments extends React.Component{
constructor(props, context) {
super(props, context);
this.state = this.context.data || window.__INITIAL_STATE__ || {users: []};
}
fetchList() {
fetch('http://localhost:3000/api/test')
.then(res => {
return res.json();
})
.then(data => {
console.log(data);
let users = data.map((user, index) => {
return(
<div key={index}>
<UserTitle title={user.title} />
<li>{user.discovery}</li>
<ul>
{
user.user_comments.map((comment, i) => {
console.log("this is the comment " + JSON.stringify(comment));
console.log("this is the i " + i);
return (
<div key={comment.userCommentId}>
<h4>{comment.app_user.fullNameSlug}</h4>
<li>{comment.comment}</li>
</div>
)
})
}
</ul>
</div>
)
})
this.setState({ users: users });
})
.catch(err => {
console.log(err);
});
}
componentDidMount() {
this.fetchList();
}
render() {
return (
<div>
<h2>Comments List</h2>
<ul>
{this.state.users}
</ul>
</div>
)
}
};
Und hier ist die <UserTitle />
prop komponente:
class UserTitle extends React.Component{
render(props){
return (
<div className="test">
<h1>{props.title}</h1>
</div>
)
}
}
Ich würde das gerenderte Zeug wahrscheinlich nicht im Zustand speichern? Das gibt dir einen ziemlich aufgeblähten Zustand. Stellen Sie den Status als Ergebnis Ihres Async ein und führen Sie das Rendern im Rendering durch. Sie können die .map von this.state.users direkt in die Render-Funktion oder in eine Sub-Render-Methode einfügen. Bei Komponenten können Sie immer null zurückgeben. Wenn also keine Prop-Komponente bereitgestellt wird, geben Sie einfach null in der Render-Funktion zurück. – thsorens
es ist {this.props.title} nicht {props.title} auch ich denke render hat keine Parameter – Mahmoud
Ich war dabei, das gleiche zu erwähnen. Render hat keine Params, Sie müssen sich darauf beziehen – thsorens