Sử dụng react-autocomplete-input
Bài đăng này đã không được cập nhật trong 5 năm
Giới thiệu
Trong sự phát triển web hiện đại, việc cải thiện trải nghiệm người dùng và với React rất dễ dàng. Khái niệm autocomplete rất đơn giản. Đây là danh sách các đề xuất dựa trên đầu vào của người dùng. Sau đó, một người dùng có thể nhấn enter để hoàn thành từ của cụm từ. Nó tiết kiệm thời gian của người dùng.
Autocomplete có thể được triển khai theo bất kỳ cách nào liên quan đến cách các đề xuất được lọc và trình bày cho người dùng. Nó thường được dùng khi xử lý với dữ liệu lớn mà không không thể đưa vào drop-down. Khi người dùng nhập, chúng sẽ lọc kết quả và chỉ hiển thị các đề xuất có chứa đầu vào của người dùng ở bất kỳ đâu trong đề xuất. Trong bài viết này, mình sẽ giới thiệu cách sử dụng react-autocomplete-input, bạn có thể vừa nhập text và search.
Tính năng
- Hỗ trợ cả bàn phím và chuột để lựa chọn tùy chọn.
- Hỗ trợ đáp ứng và hoạt động trên mọi thiết bị.
- Hỗ trợ cập nhật danh sách tùy chọn lazy-loading và dynamic.
- Hỗ trợ tất cả các trình duyệt chính bao gồm IE 8+.
Cài đặt và sử dụng
Để cài đặt, bạn sử dụng lệnh: npm i react-autocomplete-input
Cấu hình Props
Lưu ý: Tất cả các prop là tùy chọn.
Component : string or func
Giá trị mặc định: "textarea" => Loại input field được sử dụng.
defaultValue : string
Giá trị mặc định: "" => Văn bản ban đầu cho đầu vào
disabled : boolean
Giá trị mặc định: false => Tắt widget, trong quá trình gửi form.
maxOptions : number
Giá trị mặc định: 6 => Xác định có bao nhiêu tùy chọn có thể được liệt kê đồng thời. Hiển thị tất cả các tùy chọn phù hợp nếu maxOptions bằng 0
onRequestOptions : func
Giá trị mặc định: () => {}
Gọi lại để yêu cầu các tùy chọn mới để hỗ trợ lazy-loading. Nếu requestOnlyIfNoOptions là đúng, thì onRequestOptions chỉ được gọi nếu không có tùy chọn nào khả dụng. Mặt khác, onRequestOptions được gọi mỗi khi văn bản được thay đổi và trigger được tìm thấy.
matchAny: boolean
Giá trị mặc định: false => Nếu đúng, cũng sẽ phù hợp với các tùy chọn ở giữa từ này.
offsetX: number
Giá trị mặc định: 0 => Popup horizontal offset
offsetY: number
Giá trị mặc định: 0 => Popup vertical offset
options : array
Giá trị mặc định: [] => Danh sách các tùy chọn có sẵn cho autocomplete
regex : string
Giá trị mặc định: ^[a-zA-Z0-9_-]+$
Biểu thức chính quy này kiểm tra nếu văn bản sau khi trigger có thể được autocompleted hay không.
requestOnlyIfNoOptions : boolean
Giá trị mặc định: true
Nếu requestOnlyIfNoOptions là đúng, thì onRequestOptions chỉ được gọi nếu không có tùy chọn nào khả dụng. Mặt khác, onRequestOptions được gọi mỗi khi văn bản được thay đổi và trigger được tìm thấy.
spaceRemovers : array
Giá trị mặc định: [',', '.', '!', '?']
Theo mặc định, sau khi tùy chọn được chọn, nó được chèn với spacer. Nếu người dùng nhập một trong các ký tự từ mảng spaceRemovers, sau đó spacer được tự động loại bỏ.
spacer : string
Giá trị mặc định: ' ' => Ký tự được chèn cùng với tùy chọn đã chọn.
trigger : string
Giá trị mặc định: '@'
Ký tự hoặc chuỗi, kích hoạt hiển thị danh sách tùy chọn autocompletion. Hãy nhớ rằng người dùng phải nhập ít nhất một ký tự phụ để cung cấp danh sách tùy chọn nếu sử dụng trigger trống.
minChars: number
Giá trị mặc định: 0 => Chỉ hiển thị danh sách tùy chọn tự động hoàn thành sau khi nhiều ký tự này được nhập sau ký tự trigger.
value : string
Giá trị mặc định: '' => Widget hỗ trợ cả hai tùy chọn: value và state. Nếu bạn vượt qua giá trị prop, bạn phải update nó thủ công mỗi khi có sự kiện onChange.
Ví dụ
import TextInput from 'react-autocomplete-input';
class MyComponent extends React.Component {
constructor(props) {
super(props);
this.list_datas = [];
this.state = {
autocompleteData: [],
};
}
componentDidMount() {
API.ListData.getList((status, data) => this.handleDataResponse(status, data, "list_datas"))
}
handleDataResponse = (status, data, type) => {
let arr = [];
data.list_datas.map(obj => {
arr.push({
id: obj.id,
name: obj.name
});
});
this.list_datas = arr;
}
handleDataDeviceResponse = (status, data) => {
if (!status) return;
this.setState({
autocompleteData: data.list_datas,
})
}
handleChange = (event) => {
let value = event;
let array = [];
this.list_datas.map((data) => {
array.push(data.name);
})
this.setState({
autocompleteData: array,
});
}
render() {
return (
<div className="form-group">
<TextInput
value=""
options={this.state.autocompleteData}
onChange={this.handleChange}
maxOptions={6}
/>
</div>
)
}
}
Kết luận
Bài viết trên mình đã giới thiệu và cách sử dụng react-autocomplete-input, nó giúp cho việc kết hợp nhập text và suggest data vào đoạn văn bản. Hy vọng bài viết của mình sẽ giúp được các bạn để có thể ứng dụng được vào project.
Tài liệu tham khảo: https://www.npmjs.com/package/react-autocomplete-input
All rights reserved