Là một thay thế cho wrap-chuỗi-Unwrap mẫu (không có gì vốn đã xảy ra với nó, nhưng lựa chọn thay thế là luôn luôn thú vị) có một cách khác mà bạn có thể kiểm tra.
Hãy thử bằng cách tận dụng _.flow
.
Ý tưởng là mọi chức năng bên trong flow
sẽ nhận được như đầu vào đầu ra của trước đó, đó là chính xác những gì bạn cần. Một ví dụ, đưa ra các dữ liệu này:
var foundUser = {
charData: []
};
var rows = [{ok: 1, blah: 'nope'}];
Sử dụng Lodash FP
chúng ta có thể vượt qua các dữ liệu như là đối số cuối cùng. Tính năng này cùng với việc tự động currying của mỗi phương thức trong Lodash/fp làm cho cuộc sống của chúng ta dễ dàng hơn khi soạn các hàm.Điều này có nghĩa chúng ta có thể có mã này ngắn gọn và biểu cảm:
_.flow(
_.assign(rows[0]),
_.omit('blah')
)(foundUser);
// >> {"charData":[],"ok": 1}
Sử dụng phiên bản chuẩn của Lodash chúng ta phải cà ri những chức năng mình sử dụng _.partial
, và mã chắc chắn sẽ xem xét ít ngắn gọn, nhưng nó vẫn còn có thể làm vậy:
_.flow(
_.partialRight(_.assign, rows[0]),
_.partialRight(_.omit, 'blah')
)(foundUser);
// >> {"charData":[],"ok": 1}
Một lợi ích lớn của việc sử dụng dòng chảy chứ không phải là chaining là bạn có thể dễ dàng kết hợp các phương pháp Lodash với chức năng tùy chỉnh của riêng bạn, vì - như đã nói - tất cả họ cần là ju st dữ liệu như đầu vào và dữ liệu như đầu ra, và không có gì khác:
const yourFunction = d => ({ ...d, yourProp: 4 });
_.flow(
_.assign(rows[0]),
yourFunction,
_.omit('blah')
)(foundUser);
// >> {"charData":[],"ok": 1, yourProp: 4}
Điều này làm cho thành phần chức năng dễ dàng hơn và linh hoạt hơn và được cho là tự nhiên sẽ dẫn đến mã biểu cảm hơn.
Một điều cần lưu ý khác. Nếu bạn đang cài đặt và chỉ nhập các phương thức Lodash mà bạn sử dụng, bạn sẽ chỉ cần thêm gói flow
chứ không phải toàn bộ thư viện Lodash như bạn muốn làm với chuỗi.
npm i --save lodash.flow
Vs
npm i --save lodash
Có lẽ một lợi thế đáng kể trong nhiều ứng dụng thực tế, nơi có đầy đủ vóc dáng người Lodash không phải là một vấn đề và cho là dễ dàng hơn để duy trì đến nay, nhưng rất tiện dụng trong trường hợp bạn đang viết một thư viện hoặc một tập lệnh sẽ được phân phối để sử dụng như một công cụ của bên thứ ba. Trong trường hợp đó, bạn sẽ có thể giữ cho dấu chân của bạn thấp hơn về kích thước phân tán.
phương pháp Lodash tài liệu:
Hai điều đáng để thử qua:
NB - tiêu đề của bài viết thứ hai là một chút khắc nghiệt theo ý kiến của tôi, nhưng không bỏ qua nó, nội dung thực sự là rất nhiều thông tin.
Một số điều khác cần lưu ý:
Trong Lodash/fp luồng là aliased như _.pipe
, vì vậy bạn có thể chọn bất cứ gì bạn thích.
Bạn cũng có thể sử dụng _.flowRight
(hoặc fp
bí danh _.compose
) nếu bạn thích chế độ từ phải sang trái, như đã thấy trong Ramda's compose.
Ví dụ:
_.flow(
_.assign(rows[0]), // #1st to execute
yourFunction, // #2
_.omit('blah'), // #3
)(foundUser);
// is the same as...
_.flowRight(
_.omit('blah'), // #3rd to execute
yourFunction, // #2
_.assign(rows[0]), // #1
)(foundUser);
https://lodash.com/docs#_ – zerkms
https://lodash.com/docs#chain –