首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Mernstack。如何在React上创建评论后立即重新加载评论

Mernstack是一种全栈开发技术栈,由MongoDB、Express.js、React和Node.js组成。它允许开发人员使用JavaScript语言在前端和后端开发中实现一致性。

要在React上创建评论后立即重新加载评论,可以按照以下步骤进行操作:

  1. 创建一个React组件,用于显示评论列表和评论表单。
  2. 在组件的状态中添加一个用于存储评论数据的数组。
  3. 使用React的生命周期方法(如componentDidMount)或React钩子(如useEffect)来在组件加载时从后端获取评论数据,并将其存储在状态中。
  4. 在组件中添加一个处理提交评论的方法。该方法将发送评论数据到后端,并在成功后更新评论列表的状态。
  5. 在评论表单中添加一个提交按钮,并将提交按钮的点击事件绑定到提交评论的方法。
  6. 在评论列表的渲染部分,使用状态中的评论数据来显示评论内容。
  7. 当用户提交评论后,调用提交评论的方法,并在成功后重新加载评论数据。

以下是一个示例代码,演示如何在React上创建评论后立即重新加载评论:

代码语言:txt
复制
import React, { useState, useEffect } from 'react';

const CommentList = () => {
  const [comments, setComments] = useState([]);

  useEffect(() => {
    // 在组件加载时从后端获取评论数据
    fetch('/api/comments')
      .then(response => response.json())
      .then(data => setComments(data));
  }, []);

  const handleSubmitComment = (comment) => {
    // 将评论数据发送到后端
    fetch('/api/comments', {
      method: 'POST',
      body: JSON.stringify(comment),
      headers: {
        'Content-Type': 'application/json'
      }
    })
      .then(response => response.json())
      .then(data => {
        // 更新评论列表的状态
        setComments([...comments, data]);
      });
  };

  return (
    <div>
      <h2>评论列表</h2>
      {comments.map(comment => (
        <div key={comment.id}>
          <p>{comment.text}</p>
          <p>作者:{comment.author}</p>
        </div>
      ))}
      <CommentForm onSubmit={handleSubmitComment} />
    </div>
  );
};

const CommentForm = ({ onSubmit }) => {
  const [text, setText] = useState('');
  const [author, setAuthor] = useState('');

  const handleSubmit = (e) => {
    e.preventDefault();
    // 构建评论对象
    const comment = { text, author };
    // 调用父组件传递的提交评论的方法
    onSubmit(comment);
    // 清空表单
    setText('');
    setAuthor('');
  };

  return (
    <form onSubmit={handleSubmit}>
      <h3>发表评论</h3>
      <div>
        <label>评论内容:</label>
        <textarea value={text} onChange={e => setText(e.target.value)} />
      </div>
      <div>
        <label>作者:</label>
        <input type="text" value={author} onChange={e => setAuthor(e.target.value)} />
      </div>
      <button type="submit">提交</button>
    </form>
  );
};

export default CommentList;

这只是一个简单的示例,实际应用中可能需要根据具体情况进行修改和扩展。同时,你可以根据具体需求选择合适的腾讯云产品来支持你的Mernstack应用,例如使用腾讯云的云服务器、云数据库MongoDB版、云函数等。具体产品选择和介绍可以参考腾讯云官方文档。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

干货 | 携程商旅大前端 React Streaming 的探索之路

在服务器请求获取评论数据,这个方法同样会在 3s 返回。 b. 获得数据调用 `renderToString` 方法传递给 `response` 从而实现服务端渲染。...七、客户端数据交互 一步我们已经创建好了基础的项目结构,只不过项目中未添加任何 JavaScript 脚本。...所以,仔细观察上述的过程实际上页面加载的过程中会发生闪烁。 一次渲染为服务端下发携带评论数据的 HTML 模版,另一次为客户端 hydrate 失败回退到客户端渲染没有评论数据的页面。...我们以刚才 diy 的 Demo 来举例: 执行 curl --no-buffer localhost:3000 ,我们发现控制台中会立即返回前半段 HTML 内容。...--> 表示加载中(pending)状态。 而当页面整体加载完毕,再次打开浏览器控制台你会发现会变为 ,它表示加载完成(Completed)。

40020

”渐进式页面渲染“:详解 React Streaming 过程

输入 URL 页面会在 3 秒加载后进行渲染所有数据,看起来仍然还是被阻塞了三秒。...在服务器请求获取评论数据,这个方法同样会在 3s 返回。 2. 获得数据调用 `renderToString` 方法传递给 `response` 从而实现服务端渲染。...客户端数据交互 一步我们已经创建好了基础的项目结构,只不过项目中未添加任何 JavaScript 脚本。...所以,仔细观察上述的过程实际上页面加载的过程中会发生闪烁。 一次渲染为服务端下发携带评论数据的 HTML 模版,另一次为客户端 hydrate 失败回退到客户端渲染没有评论数据的页面。...--> 表示加载中(pending)状态。 而当页面整体加载完毕,再次打开浏览器控制台你会发现会变为 ,它表示加载完成(Completed)。

1.2K50
  • React 18 带给我们的惊喜

    API 2、Automatic batching 在 React 中使用 setState 来进行 dispatch 组件 State 变化,当 setState 在组件被调用后,并不会立即触发重新渲染...如果你希望在 React 18 的 setState 立即执行重新渲染, 只需要使用 flushSync 包裹即可。...它可以在客户端动态加载代码(React.lazy),配合 Suspense 组件实现数据拉取和状态控制的关注点分离(当子组件未加载完成时,父组件填充 fallback 声明的组件),但是并不能在服务器端进行加载...更加优秀的部分则是,hydrate 是可以通过用户的行为来调整优先级的,例如上图中 Profile 组件和正在 Loading 的评论组件同时处于 Suspense 的流程中,此时用户点击评论组件,React...由于 Suspense 和 并发渲染在 React 18 的大规模使用,一些具有 External stores 的 API,比如全局变量、document 对象如何在并发场景下保证一致性呢?

    71410

    来来来,尝试一下 React 18 !

    完全没有批处理机制,那么执行一个 setState 就会立即触发一次页面渲染,打印顺序应该是 1、2、3、4 假设 React 有一个完美的批处理机制,那么应该等整个函数执行完了之后再统一处理所有渲染...,打印顺序应该是 0、0、0、0 实际,在 React 18 版本之前,上面代码的打印顺序是 0、0、2、3 出现这个问题的主要原因就是在 React 的事件函数和异步回调中的状态批处理机制不一样。...fallback 属性接受任何在组件加载过程中你想展示的 React 元素。 const OtherComponent = React.lazy(() => import('....一旦 组件加载完成React 会才将其发送到浏览器,替换 组件。...详细介绍了 startTransition ,感兴趣可以一起到评论区讨论。

    1.4K20

    Next.js 14 初学者入门指南(下)

    DOM元素重建:模板中的DOM元素会在每次导航时被重新创建,而不是复用。 状态不保留:由于模板重新挂载,任何在模板中维持的状态都将丢失,每次导航都是从新的状态开始。...效果重新同步:React的效果(effects)会在每次导航时重新同步,意味着例如useEffect中的代码会在每次模板挂载时执行。...创建加载状态 在 loading.tsx 文件中,你可以定义一个或多个加载状态的 React 组件。这些组件可以是简单的动画,旋转的加载指示器,或者更复杂的占位符布局,骨架屏。...提升用户体验 利用 loading.tsx 实现的加载状态可以大大提升应用的用户体验: 减少等待感:通过立即提供反馈,用户感知到的等待时间会减少,即使实际加载时间没有变短。...错误恢复功能 在 error.tsx 中,你可以提供恢复功能,重试按钮,允许用户尝试从错误中恢复,而无需重新加载整个页面。

    30910

    何在Debian 10服务器安装LAMP

    另请参阅 : 如何在Debian 10服务器安装LEMP 虽然这个“ LAMP ”通常涉及MySQL作为数据库管理系统,但某些Linux发行版(Debian )使用MariaDB作为MySQL的替代品...# apt install apache2 在Debian 10安装Apache Apache安装完成,安装程序将立即触发systemd系统和服务管理器启动Apache2服务,并使其在系统引导时自动启动...# apt-cache search php | egrep 'module' | grep default 在Debian 10中安装PHP模块 现在重新加载Apache的配置并使用以下命令检查状态...# systemctl reload apache2 # systemctl status apache2 重新加载Apache配置 在Apache测试PHP处理 我们将创建一个简单的PHP脚本来验证...> 完成,保存并关闭文件。 现在打开浏览器并键入以下地址,以查看您的Web服务器是否可以显示由此PHP脚本创建的内容。

    2.3K30

    实战 | React开发进阶实践

    React已经火到不行了,相信大家伙儿或多或少的看过或者自己动手实践过一些demo,所以关于一些基础的概念我这里就不再赘述,大家可以在km或者google搜索“React入门”。...当应用状态发生变化时,Store 可以发出事件,通知应用的组件并进行组件的重新渲染。另外,Dispatcher起到中央hub的作用,它为组件(View)和Store构建 起了桥梁。...---- 案例分析 吃透了生命周期,了解了跨组件数据通信,再学点jsx的语法,基本我们就可以无限造轮子了(用了React,你需要造非常非常多的轮子)。我们来看看兴趣部落里的一些场景的实现 1....跨组件通信场景: 回复评论,在评论列表底部显示刚刚发表的评论。 这里有两个组件:列表组件和评论组件 在评论发表成功如何通知到列表组件来更新呢,没什么好说的,直接看代码吧。...但也不能完全这样,对于多个组件共享一份数据源的情况,还是在store加载并派发比较合适,根据实际业务情况来定夺。 以上是我在兴趣部落React实践的一些体会,感谢阅读!如果有什么不对的地方,还请斧正!

    34510

    useTransition:开启React并发模式

    紧急更新 对应直接的交互,输入,点击,按压等。需要立即响应的行为,如果不立即响应会给人卡顿的感觉。 过渡更新 将 UI 从一个视图过渡到另一个。不需要即时响应,有些延迟是可以接受的。...一旦 React 完成原始的重新渲染,它会立即开始使用新的延迟值处理后台重新渲染。由事件(例如输入)引起的任何更新都会中断后台重新渲染,并被优先处理。...const deferredValue = useDeferredValue(value) // value可以是任何类型 ⚠️ 向 useDeferredValue 传递原始值(字符串和数字)或在渲染之外创建的对象...如果在渲染期间创建了一个新对象,并立即将其传递给 useDeferredValue,那么每次渲染时这个对象都会不同(使用 Object.is 进行比较),这将导致后台不必要的重新渲染。...它没有固定的延迟时间,React 会在第一次渲染在屏幕出现立即尝试延迟渲染。延迟渲染是可中断的,它不会阻塞用户输入。 当需要在用户输入时显示过时的数据,以避免界面闪烁或卡顿。

    21300

    如何移除你项目中99%的JS代码

    如何优化FCP FCP(First Contentful Paint,首次内容绘制)测量「页面从开始加载到页面内容的任何部分在屏幕完成渲染的时间」。...在点击按钮,会发起2个JS请求,第一个请求返回的是「点击的逻辑」: 第2个JS请求返回的是「组件重新render的逻辑」: 这两段代码执行,Counter变为1。...当钟露出,会发起两个JS资源请求: useClientEffect的逻辑 Clock组件重新渲染的逻辑 如果审查元素,在钟露出前,指针对应元素都是不动的: 当钟露出,加载并执行JS代码,才开始执行动效...比如,下面是一篇文章的评论区,这是首屏渲染的样子: 这些评论数据会出现在qwik/json保存的数据中么? 不会,因为没有交互激活他们。...我们发现,有一条评论被折叠了,点击后会展开这条评论: 点击这个行为会请求: 点击逻辑对应的JS代码 这条评论对应组件的重新渲染逻辑 此时,评论数据才会出现在qwik/json中,因为点击交互激活了这个数据

    8.9K60

    Hot Reload 究竟是怎么实现的?

    进一步实现 Live Reloading、Hot Reloading 等更加高效的开发模式 二.Live Reloading 所谓 Live Reloading,就是在模块文件发生变化时,重新加载整个应用程序...因为 HMR 模块更新有冒泡机制,未经accept处理的更新事件会沿依赖链反向传递,所以在组件树顶层能够监听到树中所有组件的变化,此时重新创建整棵组件树,过程中取到的都是已经更新完成的组件,渲染出来即可得到新的视图...因为 HMR 替换的新模块,在运行时看来是完全不同的两个组件,相当于: function getMyComponent() { // 通过script标签,重新加载相同的组件代码 class...通过一层代理将组件状态剥离出来,放到代理组件中维护(其余生命周期方法等全都代理到源组件),因此换掉源组件仍能保留组件状态: The proxies hold the component’s state...联系我 如果心中仍有疑问,请查看原文并留下评论噢。

    1.7K20

    如何使用 Router 为你页面带来更快的加载速度

    往往大部分页面中真正具有意义的页面元素都需要等待数据加载完成重新渲染才可以直接展示给用户,所以优化发起数据请求的时机对于用户看到页面真正有意义的内容来说是必不可少的方式。...自然,页面的的关键对客展示内容的渲染更像是一个瀑布: 像这样的组件在我们的应用程序中数不胜数,通常我们会在各个组件挂载生命周期中发起数据请求,数据请求返回重新渲染携带数据的子组件。...自然,我们可以在 SPA 的基础优化数据请求的过程。我们可以在请求到达我们的服务时立即发起数据请求: 即使拥有多个数据请求我们也可以方便的在请求到来时并行加载数据: 不过这一切都没有问题了吗?...之后,B 组件的服务端数据加载态完成。客户端的 B 组件会获得这部分服务端返回的数据,页面会重新渲染 B 组件为携带数据的样式并对于 B 组件增加事件交互进行水合。...Loader Data 是如何关联页面渲染的 一步我们清楚了在页面加载,会调用 startNavigation 方法执行所有 loader 获取 loaderFunction 返回的数据。

    20710

    JavaScript 框架生态系统的最新动态!

    React Compiler:React Compiler 是一个可以自动进行组件 memoize 的编译器。可以通过减少不必要的重新渲染来提高性能。...资源加载React 一直在开发用于预加载加载资源(脚本、样式、字体和图片)的声明式 API。 离屏渲染:离屏渲染是 “React 中用于在后台渲染屏幕的即将推出的功能,无需额外的性能开销。...今天,经过多年的发展,Next.js 继续为 React 生态系统引入新功能,目前它是支持 React 的一些较新功能( React 服务器组件、Suspense 和 Sever Actions)的唯一框架...effect 函数将自动订阅其读取的任何状态值,并在 DOM 更新触发回调。这些仅是 Svelte 5 新 Runes 语法的简要概述,你现在就可以在单个组件的基础或整个应用中尝试这种新特性。...欢迎在评论区留言。

    11210

    尝试:Script Lab,快速 O365 开发工具SL01)

    我会习惯于从评论区,得到关于产品的第一映像,其实文章的标题部分便是来自这里。评论区的网址如下:https://aka.ms/getscriptlab ?...一些较经典的评,摘录并翻译如下: 高级用户是否真正适应HTML,CSS和JavaScript?...Excel的用户主要是高级用户,他们是否真的准备好学习HTML,CSS,JavaScript,类型脚本,jQuery,Angular,React,Vue等等?...不错的入门工具 这个应用程序是一个方便的方式来查看基本的应用程序代码如何在Word中运行。...操作①:Ribbon->插入->获取加载项 操作②:搜索“Lab”或"Script Lab" 操作③:立即更新 注意,以上操作必须联网完成(这是唯一不如 VBA 的地方了)! ?

    2.1K20

    尝试:Script Lab,快速 O365 开发工具SL01)

    我会习惯于从评论区,得到关于产品的第一映像,其实文章的标题部分便是来自这里。...评论区的网址如下:https://aka.ms/getscriptlab 一些较经典的评,摘录并翻译如下: 高级用户是否真正适应HTML,CSS和JavaScript?...Excel的用户主要是高级用户,他们是否真的准备好学习HTML,CSS,JavaScript,类型脚本,jQuery,Angular,React,Vue等等?...不错的入门工具 这个应用程序是一个方便的方式来查看基本的应用程序代码如何在Word中运行。...操作①:Ribbon->插入->获取加载项 操作②:搜索“Lab”或"Script Lab" 操作③:立即更新 注意,以上操作必须联网完成(这是唯一不如 VBA 的地方了)!

    1.3K50

    5 行代码理解 React Suspense

    所以,姑且狭义地认为组件代码已就绪的组件就是安全的,包括同步组件和已加载完的异步组件(React.lazy),例如: // 同步组件,安全 import OtherComponent from '....我们发现这两种定义并不冲突,事实,Suspense 与 Error Boundary 也确实能够共存,比如通过 Error Boundary 来捕获异步组件加载错误: If the other module...首次渲染结果符合预期,至于之后的更新过程(组件加载完成把 loading 替换回实际内容),更多地属于 Lazy 组件渲染机制的范畴,与 Suspense 关系不大,这里不展开,感兴趣可参考React...那么,存在 3 个问题: 伤及池鱼:一个尚未加载完成的 Lazy Component 就能让它前面许多本能立即显示的组件无法显示 阻塞渲染:尚未加载完成的 Lazy Component 会阻断渲染流程,...) Error Handling in React 16 React.Children.forEach 联系ayqy 如果在文章中发现了什么问题,请查看原文并留下评论,ayqy看到就会回复的(不建议直接回复公众号

    1.5K20

    React Native中构建启动屏

    在网络应用中,我们使用预加载器为用户提供动画娱乐,同时服务器操作正在处理中。尽管这听起来很直接,但它是构建和保留用户群的关键工具。 在React Native中创建启动屏有很多好处。...同样的情况也适用于启动屏,因为在应用程序启动时立即显示加载器可以帮助你在用户等待应用程序准备就绪时,向他们展示一个有组织的,设计良好的显示界面。...完成的应用将如下图所示 为什么启动画面的图片大小很重要 为移动应用创建启动画面可能会有些棘手,你肯定不希望由于启动画面分辨率的不一致在某些设备出现显示问题。例如,安卓设备的需求与iOS完全不同。...如果一切设置正确,你应该会看到类似于这样的结果: 在应用加载隐藏启动屏幕 为了在应用加载时隐藏启动屏幕,我们将使用之前安装的 react-native-splash-screen 包。...通常,某些配置和资源(字体和检查更新)会在应用准备就绪时立即实施。启动屏幕有助于在这些资源加载期间让用户忙碌,而不是延迟会损害用户体验的情况。

    51810

    【干货】从零实现 react-redux

    在开始前,我已经将这篇文章的完整代码都整理到 GitHub ,大家可以参考一下。 Redux:simple-redux React-redux:simple-react-redux 2....只需要修改对应的 state 就行了,App 组件会在 state 变化重新渲染,子组件接收新的 props 也跟着渲染。 ?...实现一个 Redux 根据前面的介绍我们已经知道了,Redux 是一个状态管理库,它并非绑定于 React 使用,你还可以将其和其他框架甚至原生 JS 一起使用,比如这篇文章:如何在React 项目中使用...Redux 接收到这个 action 通过 reducer 函数获取到下一个状态。 将新状态更新进 store,store 更新通知页面重新渲染。...看过前面 Redux 的原理,相信你也知道 react-redux 是如何实现的了吧。

    1.7K10

    React】717- 从零实现 React-Redux

    在开始前,我已经将这篇文章的完整代码都整理到 GitHub ,大家可以参考一下。 Redux:simple-redux React-redux:simple-react-redux 2....只需要修改对应的 state 就行了,App 组件会在 state 变化重新渲染,子组件接收新的 props 也跟着渲染。 ?...实现一个 Redux 根据前面的介绍我们已经知道了,Redux 是一个状态管理库,它并非绑定于 React 使用,你还可以将其和其他框架甚至原生 JS 一起使用,比如这篇文章:如何在React 项目中使用...Redux 接收到这个 action 通过 reducer 函数获取到下一个状态。 将新状态更新进 store,store 更新通知页面重新渲染。...看过前面 Redux 的原理,相信你也知道 react-redux 是如何实现的了吧。

    1.2K10
    领券