-
Notifications
You must be signed in to change notification settings - Fork 16
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feat/fix bug/scroll category #4
base: master
Are you sure you want to change the base?
Conversation
phamdatt
commented
Jul 1, 2022
- Done fixed switch highlighted category too early when scroll up
- Done fixed last category is not highlighted when its content is too short
return; | ||
} else if (y > categoryPositions[categoryPositions.length - 1]) { | ||
} | ||
if ( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Trong trường hợp này, nếu số lượng mặt hàng trong danh sách cuối cùng quá ít, tôi cần kích hoạt danh sách cuối cùng sớm bằng cách nếu giá trị y lớn hơn tổng phần tử đứng trước + một nửa của phần tử đứng sau thì set index là index cuối cùng của mảng
setActiveCategory(0); | ||
} | ||
|
||
if ( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Bởi vì sự kiện cuộn là liên tục và giá trị của nó là tương đối, tôi cần chỉ định một khoảng cách cụ thể hay nói cách khác là một công thức tính toán, tôi đã tính toán công thức sau để kích hoạt phần tử hiện tại, tôi cần giá trị y (giá trị khi kích hoạt cuộn) phải lớn hơn phần tử trước và nhỏ hơn phần tử sau, điều gì sẽ xảy ra nếu tôi chỉ kiểm tra giá trị y lớn hơn phần tử hiện tại ? . Khi kích hoạt y tăng dần thì không có vấn đề gì nhưng khi giảm giá trị y, bây giờ chỉ cần lớn hơn dù chỉ nhỏ nhất là chỉ số sẽ hoạt động sớm nên mình cần xác định khoảng cách cụ thể sau đó mới hoạt động.
@@ -47,10 +45,32 @@ export default () => { | |||
const handleScroll = (event: any) => { | |||
const y = event.nativeEvent.contentOffset.y; | |||
categoryPositions.forEach((position, index) => { | |||
if (y >= position && y < categoryPositions[index + 1]) { | |||
if (y <= 0) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Khi giá trị cuộn bé hơn hoặc bằng 0 tôi sẽ không active index , lúc này phần tử trên tabbar sẽ không được hightlight
if (y <= 0) { | ||
setActiveCategory(-1); | ||
} | ||
if ( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Bởi vì tôi xác định vị trị của phẩn tử trước và sau phần tử hiện rồi mới active index, nhưng nếu index == 0 thì là phần tử cuối tôi cần một điều kiện khác để active index