3

Hầu hết mọi người đều đồng ý rằng việc xác định các hằng số cho các loại hành động Redux của bạn là một ý tưởng hay. Nếu bạn sử dụng chuỗi ký tự, tất cả đều quá dễ để viết sai một từ và tự hỏi tại sao trình giảm tốc của bạn không phản hồi. Nếu bạn sử dụng hằng số, IDE của bạn có thể chỉ ra rằng cà phê đó ngay lập tức.

Đây là một ví dụ từ tài liệu Redux :

export const ADD_TODO = 'ADD_TODO'
export const TOGGLE_TODO = 'TOGGLE_TODO'
export const SET_VISIBILITY_FILTER = 'SET_VISIBILITY_FILTER'

Vì nó có trong tài liệu, đây là cách mà hầu hết các dự án bạn thấy thực hiện chúng. Vì vậy, bạn đang hỏi, có lý do nào để làm điều đó khác đi không? Có, có.

Trong bất kỳ ứng dụng không tầm thường nào, có thể bạn sẽ xác định các hằng số loại hành động và người tạo hành động sử dụng chúng trong một số tệp khác nhau, được phân tách bằng các khu vực chức năng. Các thành viên khác nhau trong nhóm có thể luôn luôn thêm vào họ, do đó, một loại hành động không đổi trong một tệp xung đột với một tệp trong một tệp khác luôn là một khả năng.

Ví dụ, hãy xem xét các hằng số được xác định hai tệp này:

article.ilities.js

export const FETCH_REQUESTED = 'FETCH_REQUESTED'
export const FETCH_COMPLETE  = 'FETCH_COMPLETE'
export const FETCH_ERROR     = 'FETCH_ERROR'

profile.ilities.js

export const FETCH_REQUESTED = 'FETCH_REQUESTED'
export const FETCH_COMPLETE  = 'FETCH_COMPLETE'
export const FETCH_ERROR     = 'FETCH_ERROR'

Nếu các loại hành động của bạn được xác định trong các tệp riêng biệt, rất có thể các trình giảm cũng đáp ứng với chúng. Khi bạn kết hợp các bộ giảm tốc của mình, về cơ bản bạn sẽ tạo ra một câu lệnh chuyển đổi lớn và nếu bạn có hai loại hành động có cùng giá trị không đổi, khối trường hợp sai cuối cùng sẽ bị loại bỏ cho một trong số chúng.

Là câu trả lời để làm cho tên và giá trị không đổi dài hơn?

export const FETCH_PROFILES_REQUESTED = 'FETCH_PROFILES_REQUESTED'
export const FETCH_PROFILES_COMPLETE = 'FETCH_PROFILES_COMPLETE'
export const FETCH_PROFILES_ERROR    = 'FETCH_PROFILES_ERROR'

Có thể, nhưng nó quá dài dòng và không cần thiết.

Hãy nhớ rằng, tên và giá trị không đổi không cần phải giống nhau. Đây là một cách tốt để không gian tên giá trị không đổi của bạn trong khi giữ cho tên đơn giản và rõ ràng trong bối cảnh sử dụng của chúng.

article.ilities.js

export const FETCH_REQUESTED = 'articles/fetch-requested'
export const FETCH_COMPLETE  = 'articles/fetch-complete'
export const FETCH_ERROR     = 'articles/fetch-error'

profile.ilities.js

export const FETCH_REQUESTED = 'profiles/fetch-requested'
export const FETCH_COMPLETE  = 'profiles/fetch-complete'
export const FETCH_ERROR     = 'profiles/fetch-error'

Trong phần giảm tốc bài viết, chúng tôi biết chúng tôi đang xử lý các bài viết, vì vậy tất cả các hằng số không cần phải có BÀI VIẾT như một phần của tên. Tương tự với bộ giảm cấu hình.

article.reducer.js

import { FETCH_REQUESTED, FETCH_COMPLETE, FETCH_ERROR } from '../actions/articles.actions'

profile.reducer.js

import { FETCH_REQUESTED, FETCH_COMPLETE, FETCH_ERROR } from '../actions/profiles.actions'

Đó là nó. Tên hằng đơn giản với các giá trị được đặt tên sẽ cung cấp cho bạn sự rõ ràng và giảm mức độ chi tiết, trong khi vẫn đảm bảo các trường hợp phù hợp bắn vào bộ giảm tốc của bạn.

|