状態の変更が可能なときに状態コンポーネントを使用するReactJSのベストプラクティスに従うようにしていますが、コンポーネントが状態を保持していないときに役立ちますが、両方の型を可能にするために私のコンポーネントを構造化します。現在、私はJSONファイルを取得して、個々のオブジェクトを状態コンポーネント内に設定しています。そして、それぞれの情報について個々のプロップコンポーネントを使用してその情報の設計とレイアウトを構造化したいと考えています。 propコンポーネントは、私が渡しているプロパティーがundefined
というレンダリングエラーです。これは親子コンポーネントの問題ですか?ここでReactJS - 状態からプロップへの戻りオブジェクト
は(レンダリングされているトップレベル、)私の見解フィードは次のとおりです。
export default class CommentFeed extends React.Component {
render() {
return (
<div className="comment-feed">
<Comments />
</div>
);
}
}
は、次にフェッチと状態コンポーネントとして設定マイ:
//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>
)
}
};
そして、ここれます<UserTitle />
プロップコンポーネント:
class UserTitle extends React.Component{
render(props){
return (
<div className="test">
<h1>{props.title}</h1>
</div>
)
}
}
レンダリングされたものを状態に格納しないでしょうか?それはあなたにかなり肥大した状態を与えます。状態を非同期の結果として設定し、レンダリングの内容をレンダリングします。 this.state.usersの.mapを直接レンダリング関数または一部のサブレンダリングメソッドに置くことができます。 コンポーネントの場合、常にnullを返すことができます。したがって、プロップが指定されていない場合は、レンダリング関数でnullを返すだけですか? – thsorens
それは{this.props.title}ではない{props.title}も私はレンダリングにはパラメータがないと思う – Mahmoud
私は同じことを言い表せなかった。レンダーには何のパラメータもありません。これを参照する必要があります。 – thsorens