- vừa được xem lúc

Tìm hiểu cơ bản về ReactJS (phần3)

0 0 23

Người đăng: Cháu lên ba tư

Theo Viblo Asia

Chào mọi người ở phần trước mình đã giới thiệu cơ bản về những thành phần quan trọng của React, hôm nay nhân một ngày đẹp trời mình tiếp tục phần tự học React của mình, ở bài viết này mình sẽ chỉ tập chung phần xử lý dữ liệu gồm có CRUD với React. Cùng bắt đầu nhé !!!.

Ở bài viết này tớ có sử dụng:

  • express là server xử lý dữ liệu
  • Mysql là nơi lưu trữ dữ liệu
  • React là phần hiển thị cho người dùng

Xử lý bên back-end nào

Cài đặt express và package liên quan.

Tạo thư mục để chạy cậu lệnh dưới đây để cài đặt express nhé:

npm install express --save
npx express-generator
npm install

Kết quả sau cài đặt chúng ta đã có :

  • bin: chứ file www là nơi chạy server.
  • public: là một static file chúng chứa những file như: hình ảnh, css,video ...
  • routes: chứa những router file
  • views: chứ các file giao diện
  • app.js là nơi chúng ta config những package chúng ta sử dụng

nodemon

nodemon là một package giúp chúng ta tự động cập nhật và khởi động lại mỗi khi có sự thay đổi.

Nói cụ thể sẽ là như thế này: Mỗi khi thêm code hoặc sửa code và để code chạy được thì bắt buộc chúng ta phải khởi động lại nhưng có nodemon việc đơn giản nhất của chúng ta là ctrl + s và để cài đặt nodemon thì chúng ta chạy câu lệnh:

npm install nodemon --save

Sau khi cài đặt thành công chúng ta mở file package.js cập nhật đoạn code này nhé:

"scripts": { "start": "nodemon --inspect ./bin/www" },

Sequelize và sequelize-cli

Sequelize: là một package giúp chúng ta thao tác với cơ sở dữ liệu và kiểm soát dễ hơn, thông qua model,migrate,seed.

Sau khi cài đặt thành công thì chúng ta tiếp tục cài đặt package Sequelize để thao tác cùng với cơ sở dữ liệu, để tiếp tục chúng ta chạy một số câu lệnh dưới đây.

npm install --save sequelize

Để lựa chọn CSDL mà từng người sử dụng thì ở đây có một số option cho mọi người lựa chọn và mình chọn MYSQL vì nó thân thuộc ✌️

$ npm install --save pg pg-hstore
$ npm install --save mysql2
$ npm install --save mariadb
$ npm install --save sqlite3
$ npm install --save tedious

Để tiếp tục thao tác dữ liệu cho dễ thì chúng ta cần tạo model, migrate thì chúng ta tiếp tục cài đặt với câu lệnh.

npm install --save-dev sequelize-cli
npx sequelize-cli init

Sau khi thực hiện hai câu lệnh trên thì chúng đã tạo cho chúng ta 3 thư mục gồm:

  • config: chứa file configsequelize-cli sử dụng để kết nối tới CSDL.
  • models: chứa tất cả model của dự án (thao tác dữ liệu csdl)
  • migrations: chứa tất cả migration (để thay đổi thuộc tính CSDL)
  • seeders: chứ tất cả seed (tạo dữ liệu mẫu)

Ngoài ra chúng ta có thể cài thêm dotenv package để lưu trữ các thông tin quan trọng để tránh bị mất dữ liệu thông tin quan trọng như: thông tin csdl, secret, token ....

Kết nối và tạo model, migrate

Truy cập file config.json để cập nhật các thông tin liên quan đến cơ sở dữ liệu.

{ "development": { "username": "root", "password": "kawaibii1998", "database": "demo", "host": "127.0.0.1", "dialect": "mysql" }, "test": { "username": "root", "password": null, "database": "database_test", "host": "127.0.0.1", "dialect": "mysql" }, "production": { "username": "root", "password": null, "database": "database_production", "host": "127.0.0.1", "dialect": "mysql" }
} 

vì hiện trong file index.js của thư mục model đang chạy ở môi trường development nên chúng ta sẽ cập nhật ở đó thôi.

Sau khi đã cập nhật thành công chúng ta cùng chạy câu lệnh để tạo ra model/migrate trong câu lệnh dưới đây:

npx sequelize-cli model:generate --name User --attributes name:string,email:string,password:string

Sau khi chạy thành công thì cũng là lúc chúng đã tạo migration cho chúng ta và chúng ta chỉ cần chạy migrate để tạo cơ sở dữ liệu với câu lệnh sau :

npx sequelize-cli db:migrate

Thêm sửa xóa đơn giản nào

  • tạo file UserController.js ở thư mục controller nào :v.
const { User } = require('../models'); module.exports.index = async function (req, res) { const users = await User.findAll(); res.json({ users });
} module.exports.store = async function (req, res) { const user = await User.create({ name: req.body.name, email: req.body.email, password: req.body.password, }); res.json({ user });
} module.exports.update = async function (req, res) { const user = await User.update({ name: req.body.name, email: req.body.email, password: req.body.password, },{ where: { id: req.params.id, } }); res.json({ user });
} module.exports.delete = async function (req, res) { const oldUser = await User.findByPk(req.params.id); if (!oldUser) { res.sendStatus(404); } else { const user = User.destroy({ where: { id: req.params.id, } }); res.json({ user }); }
}

js là một ngôn ngữ bất đồng bộ chính vì thế chúng ta cần async await để giải quyết vấn đề truy cập CSDL :v.

  • tạo user.js ở thư mục routes để tạo router cho chúng nhé.
var express = require('express');
var router = express.Router();
var controller = require('../controllers/UserController');
/* GET users listing. */
router.get('/', controller.index);
router.post('/create', controller.store);
router.post('/update/:id', controller.update);
router.get('/delete/:id', controller.delete); module.exports = router;

Thêm router mà chúng ta vừa tạo vào file app.js nhé .

var usersRouter = require('./routes/users');
app.use('/users', usersRouter);

Giờ chạy POSTMAN để kiểm tra để xem ok không nhé.

Xử lý bên font-end

Cài đặt react và các package liên quan.

Cài đặt React và một số package cần dùng bằng câu lệnh sau:

npx create-react-app fontend
cd fontend
npm install axios --save
npm install react-router-dom --save
npm install material-ui --save

cài đặt router

Bình luận

Bài viết tương tự

- vừa được xem lúc

Những điều cần lưu ý và sử dụng Hook trong React (Phần 5)

V. Sử dụng useRef như thế nào cho đúng.

0 0 140

- vừa được xem lúc

7 Cách viết code React "clean" hơn

Mở đầu. Là nhà phát triển React, tất cả chúng ta đều muốn viết code sạch hơn, đơn giản hơn và dễ đọc hơn. 1. Sử dụng JSX shorthands.

0 0 199

- vừa được xem lúc

Create app covid-19 use Reactjs

Chào các bạn hôm nay mình sẽ chia sẻ với các bạn một app covid-19, để mọi người cùng tham khảo, tính năng của App này chỉ đơn giản là show số liệu về dịch Covid của các nước trên thế giới như: Số ngườ

0 0 55

- vừa được xem lúc

ReactJS Custom Hooks

ReactJS cung cấp rất nhiều cho bạn các hook mà bạn có thể sử dụng hằng ngày vào project của mình. Nhưng bên cạnh đó bạn có thể tự tạo ra các hook của riêng bạn để sử dụng, làm cho việc tối ưu hóa code

0 0 80

- vừa được xem lúc

3 cách để tránh re-render khi dùng React context

3 cách để tránh re-render khi dùng React context. Nếu đã từng sử dụng React context cho dự án của bạn, và gặp phải tình trạng các component con - Consumer re-render rất nhiều lần, thậm chí bị sai logi

0 0 38

- vừa được xem lúc

Tìm hiểu về React Hook: Sử dụng useDebugValue

Trong bài viết hôm này, tôi sẽ giới thiệu các bạn một React Hook tiếp theo, đó là useDebugValue. useDebugValue là gì .

0 0 58