Andarist / Andarist/react-textarea-autosize

Resize Stops Working after Browser Back

Đang mở
#247 5 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
TypeScript
Star
2.4k
Fork
247
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

First off, I wanna say thanks for this awesome module! I'm thoroughly happy with it. Now, the issue I'm experiencing might be specific to my project because I'm using `react-router` and `turbolinks`. After navigating through pages via browser back/forward, resizing no longer works.

I did some debugging and found out the cause. Sometimes, the browser creates a new `document.body`, but `hiddenTextarea` keeps pointing at old `body` (and hence causing memory leak. Not sure where this behavior is from, BFCache might be the culprit here).

The quick fix I found is to change the following statement in [`calculateNodeHeight.js`](https://github.com/andreypopp/react-textarea-autosize/blob/efc9bc8e843825038fa1c3e7b8e221b6c673b463/src/calculateNodeHeight.js#L60)
```JavaScript
// Before change
if (hiddenTextarea.parentNode === null) {
document.body.appendChild(hiddenTextarea);
}
// After change
if (!document.body.contains(hiddenTextarea)) { /.../ }
```
This way, you can always check for the latest `body` to see whether or not `hiddenTextarea` exists in the current `body` instance. There might be a better way, but this is a one-liner fix.

If you'd like, I can quickly make the change, add some tests, and submit a PR. Let me know what you think :)

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.