私はReactでCRUDアプリケーションを構築しています。私はこの問題を助けることができるかどうか疑問に思いました。AJAXリクエスト後のRe-Render Reactコンポーネント
componentDidMount
でAJAX GETリクエストをサーバーに送信し、データを取得して成功関数に状態を設定しています。レンダー機能では、state
配列をマップし、各状態を<li>
要素にレンダリングし、<button>
要素を含めます。
<button>
要素をクリックすると、delete()
関数が呼び出されます。これは、IDのAJAX DELETE要求を呼び出します。
私の問題は、AJAXリクエストが成功した後にコンポーネントを再レンダリングまたは更新する方法です。
import React from 'react';
class PostList extends React.Component {
constructor() {
super();
this.state = {
posts: []
}
}
componentDidMount() {
$.ajax({
url: '/posts',
type: "GET",
dataType: 'json',
cache: false,
success: function(data) {
this.setState({posts: data})
}.bind(this)
});
}
delete(event) {
let postId = event.target.parentNode.getAttribute("data-id");
$.ajax({
url: '/posts/' + postId,
type: "DELETE",
success: function(data) {
console.log(data);
}.bind(this)
});
}
render() {
let posts = this.state.posts.map((index) => {
return <li data-id={index._id} className="list-group-item"><a href={"posts/" + index._id}>{index.title}</a><button className="btn btn-default" onClick={this.delete.bind(this)}>Delete</button></li>
})
return (
<ul className="list-group">
{posts}
</ul>
)
}
}
export default PostList;