• react评论列表连接数据库


    关注 码龄 粉丝数 原力等级 -- 被采纳 被点赞 采纳率 所念皆所得吖 2024-04-30 00:55 采纳率: 69.2% 浏览 5 首页/ 编程语言 / react评论列表连接数据库 javascriptnode.jsreact.js 评论列表连接数据库 import React from 'react' import './index.scss' class AddComments extends React.Component { // 初始化状态 state = { comments: [ { id: 1, name: 'cnyangx', content: '前排出售瓜子、汽水、辣条!!!' }, { id: 2, name: '大脸猫', content: '沙发~' }, { id: 3, name: '老张', content: '我有酒,你有故事吗' } ], userName: '', userContent: '' }; handleForm = (e) => { this.setState({ [e.target.name]: e.target.value }) }; // 验证id唯一性 verifyID = () => { const newID = Math.floor(Math.random() * 100000); const flag = this.state.comments.find(item => item.id === newID); console.log(flag) if (flag === -1) { this.verifyID() } return newID; }; // 发表评论 publishComments = () => { const { comments, userName, userContent } = this.state; if (userName.trim() === '' || userContent.trim() === '') { alert('请输入内容'); return } // 将新的评论添加到集合中 const newComments = [ { id: this.verifyID(), name: userName, content: userContent }, ...comments ]; console.log(newComments); this.setState({ comments: newComments }) }; renderList = () => { return this.state.comments.length === 0 ? (
    暂无评论,快去抢沙发吧!
    ) : (
      { this.state.comments.map(item => (
    • 评论人: {item.name}

      评论内容:{item.content}

    • )) }
    ) }; render() { const { userName, userContent } = this.state; return (


    {/* 渲染评论列表 使用三元表达式 */} {this.renderList()}
    ) } } // 导出 export default AddComments; 接口代码不会写 展开全部 收起 写回答 好问题 0 提建议 追加酬金 关注问题 微信扫一扫 点击复制链接 分享 邀请回答 编辑 收藏 删除 结题 收藏 举报 追加酬金 (90%的用户在追加酬金后获得了解决方案) 当前问题酬金 ¥ 0 (可追加 ¥500) ¥ 15¥ 20¥ 50¥ 100¥ 200 支付方式 扫码支付 二维码出错 点击刷新 支付金额 15 元 提供问题酬金的用户不参与问题酬金结算和分配 支付即为同意 《付费问题酬金结算规则》 结题 再想想 删除 再等等

    2条回答 默认 最新

    • 专家-皆知 2024-04-30 00:55
      关注

      参考免费微信小程序:皆我百晓生 作答,经由专家-皆知整理回复,如问题解决,望采纳;如仍有疑问,请评论回复。

      要实现React评论列表与数据库的连接,你需要后端服务支持,通常我们会使用Express作为Node.js的web应用框架,并通过MySQL或MongoDB等数据库存储评论数据。下面是一个简化的示例,展示如何将上述React组件与一个基本的Express后端服务连接起来。

      后端服务(Express + MySQL)

      首先,确保你安装了express, mysql2, 和 body-parser。你可以通过npm安装它们:

      npm install express mysql2 body-parser
      

      创建一个名为server.js的文件,设置Express服务器和MySQL连接:

      const express = require('express');
      const mysql = require('mysql2');
      const bodyParser = require('body-parser');
      
      const app = express();
      app.use(bodyParser.json());
      
      // 创建数据库连接
      const pool = mysql.createPool({
        host: 'localhost',
        user: 'your_username',
        password: 'your_password',
        database: 'your_database'
      });
      
      // 注册API路由
      app.post('/api/comments', (req, res) => {
        const { userName, userContent } = req.body;
        const sql = 'INSERT INTO comments (name, content) VALUES (?, ?)';
        pool.query(sql, [userName, userContent], (err, results) => {
          if (err) {
            res.status(500).json({ msg: '服务器错误' });
          } else {
            res.status(200).json({ msg: '评论成功' });
          }
        });
      });
      
      // 启动服务器
      app.listen(3001, () => {
        console.log('Server is running at http://localhost:3001');
      });
      

      记得在MySQL中创建一个名为comments的表:

      CREATE TABLE comments (
        id INT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(255) NOT NULL,
        content TEXT NOT NULL
      );
      

      前端调整(React连接后端)

      修改React组件以发送POST请求到你的后端服务器:

      import React, { useState } from 'react';
      import axios from 'axios'; // 需要安装axios: npm install axios
      
      // 省略其他无关代码...
      
      // 发表评论函数调整
      publishComments = async () => {
        const { userName, userContent } = this.state;
        if (userName.trim() === '' || userContent.trim() === '') {
          alert('请输入内容');
          return;
        }
        
        try {
          await axios.post('/api/comments', { userName, userContent });
          // 成功后,你可以刷新评论列表,或者添加评论到本地状态,这里仅演示API调用
          alert('评论发表成功');
        } catch (error) {
          console.error('发表评论时出错:', error);
          alert('评论发表失败,请重试');
        }
      };
      
      // 省略其他无关代码...
      

      确保你的前端应用能访问到运行在3001端口的后端服务。如果你的前端和后端不在同一个服务器上,你需要处理跨域问题,可以通过在Express中添加CORS中间件解决:

      const cors = require('cors');
      app.use(cors());
      

      以上就是将React评论功能与MySQL数据库通过Express后端服务连接的基本步骤。记得根据实际情况替换数据库连接的配置信息。

      展开全部

      评论 编辑记录
    • Kwan的解忧杂货铺 Java领域优质创作者 2024-05-06 13:39
      关注

      下午好🌅🌅🌅
      本答案参考ChatGPT-3.5

      问题:如何使用Node.js连接数据库,实现React评论列表的数据持久化?

      解决方案:

      1.安装Mysql和Node.js的相关依赖库

      具体可以参考官方文档,或者在命令行中输入:

      npm install --save mysql

      npm install --save express

      2.在Node.js中编写连接数据库的代码

      以下为示例代码:

      const mysql = require('mysql');

      const connection = mysql.createConnection({ host: 'localhost', user: 'root', password: '', database: 'comment' });

      connection.connect();

      module.exports = connection;

      以上代码中,我们使用Node.js连接MySQL数据库,并将连接对象导出为模块,方便在其他文件中进行调用。

      3.在Node.js中编写获取评论列表的代码

      以下为示例代码:

      const connection = require('./mysql');

      exports.getComments = function(cb) { connection.query('SELECT * FROM comments', function (error, results, fields) { if (error) throw error; cb(results); }); }

      以上代码中,我们通过使用Node.js连接对象的query方法,从comments表中获取所有评论数据。同时在调用时传入一个回调函数cb,将查询结果返回给调用方。

      4.在Node.js中编写添加评论的代码

      以下为示例代码:

      const connection = require('./mysql');

      exports.addComment = function(name, content, cb) { connection.query('INSERT INTO comments SET ?', { name: name, content: content }, function (error, results, fields) { if (error) throw error; cb(results); }); }

      以上代码中,我们使用Node.js连接对象的query方法,将新的评论数据插入到comments表中。同时,在调用时传入评论人name和评论内容content,以及回调函数cb。

      5.在React组件中调用Node.js的API,从MySQL数据库中获取评论列表,并渲染到页面上

      以下为示例代码:

      import React from 'react'; import axios from 'axios';

      class AddComments extends React.Component { state = { comments: [], userName: '', userContent: '' };

      componentDidMount() { this.getComments(); }

      getComments = () => { axios.get('/api/comments').then(response => { this.setState({ comments: response.data }); }).catch(error => console.log(error)); };

      ...

      renderList = () => { return this.state.comments.length === 0 ? (

      暂无评论,快去抢沙发吧!
      ) : (
      • { this.state.comments.map(item => (
      • 评论人: {item.name}

        评论内容:{item.content}

      • )) }
      ) };

      ...

      }

      以上代码中,我们使用axios库调用Node.js API获取评论列表数据,并存放到React组件state中。同时,在renderList函数中,遍历state中的评论数据,并渲染到页面上。

      6.在React组件中调用Node.js的API,将新的评论数据保存到MySQL数据库中

      以下为示例代码:

      import React from 'react'; import axios from 'axios';

      class AddComments extends React.Component { ...

      publishComments = () => { const { userName, userContent } = this.state; if (userName.trim() === '' || userContent.trim() === '') { alert('请输入内容'); return } axios.post('/api/comments', { name: userName, content: userContent }).then(response => { this.setState({ comments: [response.data, ...this.state.comments], userName: '', userContent: '' }); }).catch(error => console.log(error)); };

      ...

      }

      以上代码中,当用户点击发布评论按钮时,我们使用axios库调用Node.js API将评论数据传递给后台并保存到MySQL数据库中。成功添加评论后,我们从API的响应结果中获取到新的评论数据,将其加入到React组件的评论数据列表中,同时清空评论框中的内容。

      展开全部

      评论
    编辑
    预览

    报告相同问题?

  • 相关阅读:
    大唐“痴情”男女-白居易-湘灵
    Linux目录结构详解
    [JVM]类加载的过程(学习总结)
    『德不孤』Pytest框架 — 7、Pytest预期失败
    HttpClient,HttpClinet5的使用区别,以及上传文件使用区别。
    Spring中静态代理设计模式
    数据结构之二叉树的精讲
    web前端面试-10大经典题(HTML基础)
    spring cloud gateway Route配置
    [数据结构] 二叉树--堆
  • 原文地址:https://ask.csdn.net/questions/8097333