찾다
CMS 튜토리얼Word누르다React 기반 블로그 애플리케이션에서 게시물 업데이트 및 삭제: 4부

이 튜토리얼 시리즈의 이전 부분에서는 게시물 추가 및 표시 기능을 구현하는 방법을 배웠습니다. React에서 블로그 애플리케이션을 만드는 방법에 대한 튜토리얼 시리즈의 이 부분에서는 블로그 게시물을 업데이트하고 삭제하는 기능을 구현합니다.

시작하기

이 시리즈의 마지막 부분에 대한 소스 코드 복제를 시작해 보겠습니다.

으아악

디렉토리를 복제한 후 프로젝트 디렉터리로 이동하여 필요한 종속성을 설치합니다.

으아악

Node.js 서버를 시작하면 애플리케이션이 http://localhost:7777/index.html#/에서 실행됩니다.

업데이트 생성 및 보기 삭제

업데이트 및 삭제 아이콘이 있는 테이블에 데이터가 표시되도록 블로그 게시물 목록을 수정해 보겠습니다. 코드에 표시된 대로 ShowPost 组件的 render 方法中,将现有的 div를 테이블로 바꾸세요.

으아악

위 코드와 같이 기존 코드를 수정하여 게시물을 테이블 형식으로 표시하도록 했습니다. posts 变量以迭代 posts 集合并动态创建所需的 trtd 매핑했습니다.

위 변경 사항을 저장하고 서버를 다시 시작하세요. 브라우저에서 http://localhost:7777/home#/을 가리키면 블로그 게시물 목록이 표 형식으로 표시됩니다.

在基于 React 的博客应用程序中更新和删除帖子:第 4 部分

업데이트 릴리스 기능 구현

업데이트 게시 기능을 구현하려면 편집 아이콘에 클릭 이벤트를 첨부해야 합니다. 다음과 같이 편집 아이콘 span을 수정합니다.

으아악

위 코드와 같이 게시물 ID를 updatePost 메소드에 매개변수로 전달했습니다.

ShowPost 구성 요소 내에 메소드 ShowPost 组件内创建一个方法 updatePost를 만듭니다.

으아악

위 코드와 같이 편집된 항목의 ID를 사용하여 게시물 추가 페이지로 리디렉션을 실행했습니다. 게시물 추가 페이지에서는 전달된 ID가 포함된 블로그 게시물의 세부정보를 가져오고 세부정보를 채울 수 있습니다.

게시물 추가 페이지에 선택적 ID 매개변수를 포함하도록 라우터를 수정하세요.

으아악

AddPost 组件内,创建一个名为 getPostWithId 的方法,以使用 id 获取博客文章的详细信息。在 getPostWithId 方法内,对 app.js 内的 getPostWithId API에서 AJAX 호출을 해보세요.

으아악

작성자: getPostWithId API 方法收到的响应,您已更新状态变量 titlesubject.

상태 변수의 값을 표시하도록 titlesubject 텍스트 상자를 수정합니다.

으아악

이제 app.js 中创建 getPostWithId API,以对 MongoDB 数据库进行数据库调用,以获取具有特定 ID 的帖子详细信息。这是 getPostWithId API 메서드를 살펴보겠습니다.

으아악

자세한 내용은 post.js 文件中,创建一个方法 getPostWithId에서 데이터베이스를 쿼리하세요. 다음과 같습니다:

으아악

위 코드에서 볼 수 있듯이 findOne API를 사용하여 특정 ID를 가진 블로그 게시물의 세부정보를 가져왔습니다.

위 변경 사항을 저장하고 프로그램을 실행해 보세요. 홈 페이지에서 편집 아이콘을 클릭하면 게시물 추가 페이지로 리디렉션되어 제목과 제목이 채워집니다.

在基于 React 的博客应用程序中更新和删除帖子:第 4 部分

이제 블로그 게시물 세부정보를 업데이트하려면 idapp.js 中的 addPost API 方法内。如果是新帖子,则 id 将为 undefined를 확인해야 합니다.

수정AddPost 组件中的 AddPost 方法以包含 id 상태 변수.

으아악

addPost API 方法中,您需要检查 id 参数是否为 undefined 。如果undefined,则表示这是一个新帖子,否则需要调用update方法。 addPost API 메소드는 다음과 같습니다:

으아악

post.js 파일에서 post.js 文件中,创建一个名为 updatePost 的方法来更新博客文章详细信息。您将利用 updateOne API 来更新具有特定 id 的博客文章的详细信息。以下是 updatePost라는 메서드를 만들어 블로그 게시물 세부정보를 업데이트하세요. updateOne API를 활용하여 특정 id로 블로그 게시물의 세부정보를 업데이트합니다.

메소드는 다음과 같습니다: 🎜
updatePost: function(id, title, subject, callback){
	MongoClient.connect(url, function(err, db) {
	  	db.collection('post').updateOne( 
	  		{ "_id": new mongodb.ObjectID(id) },
	  		{ $set: 
	  			{ "title" : title,
	  			  "subject" : subject 
	  			}
	  		},function(err, result){
			assert.equal(err, null);
	    	if(err == null){
	    		callback(true)
	    	}
	    	else{
	    		callback(false)
	    	}
		});
	});
}

保存以上更改并重新启动服务器。登录应用程序并点击编辑图标。修改现有值并单击按钮更新详细信息。

实现删除帖子功能

要实现删除帖子功能,您需要将点击事件附加到删除图标。修改删除图标跨度如图:

<span onClick={this.deletePost.bind(this,post._id)} className="glyphicon glyphicon-remove"></span>

如上面的代码所示,您已将帖子 ID 作为参数传递给 deletePost 方法。

ShowPost 组件中创建一个名为 deletePost 的方法。

deletePost(id){
      
}

ShowPost组件构造函数中绑定该方法。

this.deletePost = this.deletePost.bind(this);

要在 map 函数回调中使用 this,您需要将 this 绑定到 map 函数。修改map函数回调如图:


      {
        this.state.posts.map(function(post,index) {
           return 
                    {index+1}
                    {post.title}
                    {post.subject}
                    
                      
                    
                    
                      <span onClick={this.deletePost.bind(this,post._id)} className="glyphicon glyphicon-remove"></span>
                    
                  
        }.bind(this))
      }
 

deletePost 方法中,在调用删除 API 之前添加确认提示。

deletePost(id){
  if(confirm('Are you sure ?')){
    // Delete Post API call will be here !!
  }
}

现在让我们在 app.js 文件中添加 deletePost API。 API 将从 AJAX 调用中读取帖子 ID 并从 MongoDB 中删除该条目。以下是 deletePost API 的外观:

app.post('/deletePost', function(req,res){
  var id = req.body.id;
  post.deletePost(id, function(result){
    res.send(result)
  })
})

如上面的代码所示,您将调用 post.js 文件中的 deletePost 方法并返回结果。让我们在 post.js 文件中创建 deletePost 方法。

deletePost: function(id, callback){

	MongoClient.connect(url, function(err, db){
		 db.collection('post').deleteOne({
		 	_id: new mongodb.ObjectID(id)
		 },
		 function(err, result){
			assert.equal(err, null);
	    	console.log("Deleted the post.");
	    	if(err == null){
	    		callback(true)
	    	}
	    	else{
	    		callback(false)
	    	}
		});
	})
}

如上面的代码所示,post.js 文件中的 deletePost 方法将使用 MongoClient 连接到MongoDB 中的博客数据库。使用从 AJAX 调用传递的 Id ,它将从数据库中删除该帖子。

更新 home.jsx 文件中 deletePost 方法内的代码,以包含对 deletePost API 的 AJAX 调用 app.js 文件。

deletePost(id){
  if(confirm('Are you sure ?')){
    var self = this;
    axios.post('/deletePost', {
      id: id
    })
    .then(function (response) {
      
    })
    .catch(function (error) {
      
    });
  }
}

删除博客文章后,您需要刷新博客文章列表以反映这一点。因此,创建一个名为 getPost 的新方法,并将 componentDidMount 代码移到该函数内。这是 getPost 方法:

getPost(){
  var self = this;
  axios.post('/getPost', {
  })
  .then(function (response) {
    console.log('res is ',response);
    self.setState({posts:response.data})
  })
  .catch(function (error) {
    console.log('error is ',error);
  });
}

修改componentDidMount代码,如图:

componentDidMount(){
  this.getPost();

  document.getElementById('homeHyperlink').className = "active";
  document.getElementById('addHyperLink').className = "";
}

deletePost AJAX 调用成功回调内,调用 getPost 方法来更新博客文章列表。

deletePost(id){
  if(confirm('Are you sure ?')){
    var self = this;
    axios.post('/deletePost', {
      id: id
    })
    .then(function (response) {
      self.getPost();
    })
    .catch(function (error) {
      console.log('Error is ',error);
    });
  }
}

保存以上更改并重新启动服务器。尝试添加新的博客文章,然后从网格列表中单击“删除”。系统将提示您一条删除确认消息。单击确定按钮后,该条目将被删除,并且博客文章列表将被更新。

在基于 React 的博客应用程序中更新和删除帖子:第 4 部分

总结

在本教程中,您了解了如何在 React 博客应用程序中实现删除和更新博客文章功能。在本教程系列的下一部分中,您将了解如何为登录用户实现个人资料页面。

请在下面的评论中告诉我们您的想法和建议。本教程的源代码可在 GitHub 上获取。

위 내용은 React 기반 블로그 애플리케이션에서 게시물 업데이트 및 삭제: 4부의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
WordPress는 다른 웹 사이트 빌더와 어떻게 비교됩니까?WordPress는 다른 웹 사이트 빌더와 어떻게 비교됩니까?Apr 28, 2025 am 12:04 AM

WordPressExCelsoverWebsiteBuildersDuetoitsflexibility, 확장 성, 및 소수-소수

개발자가 2025 년에 사용할 수있는 5 WordPress 플러그인개발자가 2025 년에 사용할 수있는 5 WordPress 플러그인Apr 27, 2025 am 08:25 AM

2025 년 웹 사이트 개발을위한 7 개의 필수 워드 프레스 플러그인 2025 년에 최상위 WordPress 웹 사이트를 구축하려면 속도, 응답 성 및 확장 성이 필요합니다. 이를 효율적으로 달성하는 것은 전략적 플러그인 선택에 종종 달려 있습니다. 이 기사 Highlig

WordPress는 무엇을 사용 하시겠습니까?WordPress는 무엇을 사용 하시겠습니까?Apr 27, 2025 am 12:14 AM

WordPressCanbeusedForVariousPurposesBeyondBlogging.1) 전자 상거래 : WithoOcommerce, ItcanBecomeafullonlinlineStore.2) 회원체 : 플러그인 슬라이크 embercelableExclusiveContentAreas.3) 포트리오 사이트 : TremeslikeAstraallowstunninglays

WordPress는 포트폴리오 웹 사이트를 만드는 데 좋은가요?WordPress는 포트폴리오 웹 사이트를 만드는 데 좋은가요?Apr 26, 2025 am 12:05 AM

예, WordPressIsexCellentforcreatingAportfoliOweBsite.1) Itoffersnumportfortfolio-specificthemes 'foreasycustomization.2) 플러그인 Suchas'Elementor'LeentuitivedEsign, Thought ToisenhancedWithTools'Yoastoaastoeo', Boosting

웹 사이트를 처음부터 코딩하는 것보다 WordPress를 사용하는 이점은 무엇입니까?웹 사이트를 처음부터 코딩하는 것보다 WordPress를 사용하는 이점은 무엇입니까?Apr 25, 2025 am 12:16 AM

WordPressIsAdvantageOverCodingawebsitefromscratchdueto : 1) EasyofuseanDfasterDevelopment, 2) 유연성 및 스케일링, 3) Strong-inseoandMarketingTools, 5) 비용 효율성 및 6) 정기적 인 보조 장치

WordPress는 컨텐츠 관리 시스템으로 만드는 이유는 무엇입니까?WordPress는 컨텐츠 관리 시스템으로 만드는 이유는 무엇입니까?Apr 24, 2025 pm 05:25 PM

WordPressIsacmsduetoiteseaseofuse, 사용자 정의, 사용자 관리, SEO 및 CommunitySupport

WordPress에 주석 상자를 추가하는 방법WordPress에 주석 상자를 추가하는 방법Apr 20, 2025 pm 12:15 PM

WordPress 웹 사이트에서 의견을 활성화하여 방문자에게 토론에 참여하고 피드백을 공유 할 수있는 플랫폼을 제공하십시오. 이렇게하려면 다음 단계를 따르십시오. 의견 활성화 : 대시 보드에서 설정으로 이동하고 & gt; 토론을하고 댓글 허용 확인란을 선택하십시오. 주석 양식 작성 : 편집기에서 블록 추가를 클릭하고 주석 블록을 검색하여 컨텐츠에 추가하십시오. 사용자 정의 주석 양식 : 제목, 레이블, 자리 표시 자 및 버튼 텍스트를 설정하여 주석 블록을 사용자 정의합니다. 변경 사항 저장 : 업데이트를 클릭하여 주석 상자를 저장하고 페이지 나 기사에 추가하십시오.

WordPress에서 하위 사이트를 복사하는 방법WordPress에서 하위 사이트를 복사하는 방법Apr 20, 2025 pm 12:12 PM

WordPress 하위 사이트를 복사하는 방법? 단계 : 기본 사이트에서 하위 사이트를 만듭니다. 기본 사이트에서 하위 사이트를 복제합니다. 클론을 대상 위치로 가져옵니다. 도메인 이름 (선택 사항)을 업데이트하십시오. 별도의 플러그인 및 테마.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.