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

Làm thế nào để truncate file name mà vẫn dữ được extension của chúng (Phần 1)

0 0 31

Người đăng: Do Anh Tuan

Theo Viblo Asia

Mở đầu

Xin chào tất cả các bạn hôm nay mình sẽ giới thiệu cho các bạn cách truncate file name/text mà vẫn dữ được extension trên nhiều line. Hi vọng nó sẽ giúp ích cho các bạn.

1. Vấn đề hay gặp phải :

Các bạn muốn nó hiển thị 2 line và vẫn giữ đc phần extension, những phần bị truncate sẽ hiển thị dấu '...' nhưng nó lại ra như thế này : image.png

2. Cách khắc phục :

Mục tiêu là 2 line và truncate vẫn giữ được extension name nha các bạn.

Để giải quyết được vấn đề này thì có rất nhiều cách để giải quyết sẽ có một số cách sẽ phù hợp với một số bạn:

Cách 1: Mình dùng Tailwind nha :

<div className="min-h-[50px] break-all line-clamp-2"> {name} // Tên file
</div>

Thì nó sẽ cho ra kết quả như thế này :

image.png

Ở đây như các bạn sẽ thấy nó đã hiển thị được 2 line rồi, UI không bị bể như trên nữa nhưng nó lại không đáp ứng được việc hiển thị extension ở cuối uhmmm.... vậy là không được rồi bây giờ qua cách 2 nha

Cách 2: Mình dùng chút JavaScript :

Ở đây mình sẽ có một hàm như sau :

const truncateText = (text: string, maxLength: number) => { if (text.length > maxLength) { return ( text.substring(0, 20) + '...' + text.substring(text.length - 10, text.length) ); } return text; }; truncateText(name, 35)

Và kết quả sẽ ở đây : image.png

Như chúng t thấy hiện tại nó đã được 2 line, có extension hiện đã đáp ứng đúng nhưng nếu nhìn kĩ thì sẽ thấy chưa max width mà đã truncate rồi như thế là không ổn rồi, rồi còn một số trường hợp nếu name chỉ chỉ chứa 1 ký tự nữa, nói thật ra cách thì này khá lúa :v

Cách 3: Sử dụng thư viện React-Text-Truncate :

Đây là Demo nhé các bạn.

Cách cài :

//npm
npm install react-text-truncate //yarn
yarn add react-text-truncate

Cách sử dụng khá đơn giản :

<div className="min-h-[50px] mt-3 break-all"> <TextTruncate line={2} truncateText={`...${removeExtension(name).slice(-3,)}.${getExtensionFile(name)}`} text={name} />
</div>

Kết quả nó sẽ như thế nay: image.png

Bây giờ nhìn trong ổn phết đấy chứ nhỉ =)))

Ở đây sẽ có 2 hàm removeExtension() và hàm getExtensionFile()

Nếu muốn biết 2 hàm này từ đâu mà ra thì hãy đón xem phần 2 nha =))))

5 Kết luận

Hãy đón xem phần 2 với những hàm xử lý truncate text. Cảm ơn bạn đã đọc bài viết.

Bình luận

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

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

Cùng tìm hiểu về các hook trong React hooks

Đối với ai đã từng làm việc với React thì chắc hẳn đã có những lúc cảm thấy bối rối không biết nên dùng stateless (functional) component hay là stateful component. Nếu có dùng stateful component thì cũng sẽ phải loay hoay với đống LifeCycle 1 cách khổ sở Rất may là những nhà phát triển React đã kịp

0 0 100

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

Khi nào nên (và không nên) sử dụng Redux

. Công việc quản lý state với những hệ thống lớn và phức tạp là một điều khá khó khăn cho đến khi Redux xuất hiện. Lấy cảm hứng từ design pattern Flux, Redux được thiết kế để quản lý state trong các project JavaScript.

0 0 127

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

ReactJS: Props và State

Nếu bạn đã học ReactJS hay React Native, bạn sẽ thấy các Props và State được sử dụng rất nhiều. Vậy chính xác chúng là gì? Làm thế nào để chúng ta sử dụng chúng đúng mục đích đây.

0 0 59

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

State và Props trong Reactjs

Hello các bạn, tiếp tục seri tìm hiểu về ReactJs hôm nay mình xin giới thiệu đến các bạn hai thứ mình cho là thú vị nhất của ReactJs là State và Props. State bạn có thể hiểu đơn giản là một nơi mà bạn lưu trữ dữ liệu của Component, từ đó bạn có thể luân chuyển dữ liệu đến các thành phần trong Compon

0 0 54

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

Memoization trong React

. 1.Introduction. Memoization có liên quan mật thiết đến bộ nhớ đệm, và dưới đây là một ví dụ đơn giản:. const cache = {}.

0 0 51

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

Nâng cao hiệu suất React Hooks với React.memo, Memoization và Callback Functions

1.Ngăn Re-render và React.memo. React.

0 0 80