Comments (7)
Furthermore Caurosel's onLoaderVisible can call onFetch again, which seems like it might be able to cause a parallel set of fetches to start (the calls to this.setState look a little iffy since it can be updated asynchronously and you're not explicitly the state in functions where it's blessed to be resolved).
from giphy-js.
@kwasimensah thanks for reporting this, you're seeing this in the React Carousel
? It might require this fix that I just made to the grid. I'll take a look when I'm back in the office tomorrow
from giphy-js.
Yup, this is with Carousel
from giphy-js.
@kwasimensah I released a 1.0.6 version of @giphy/react-components
, this should only trigger the paginator when the end of the carousel that has the loader element is on the screen. When the loader element goes off the screen, fetching should stop.
This is the approach we've been using for quite a bit on giphy.com with our grid, and in our web extensions and it should be solid.
Not sure exactly how it went so crazy in your implementation, but my bug fix tweaks the initial state, which when set to fetch
on mount, I've seen the bug you're reporting when the browser isn't in the active tab.
If you're still seeing the issue, maybe compare to our codesandbox implementation: https://codesandbox.io/s/giphyreact-components-hbmcf?file=/src/index.tsx
Or provide more details 👍
from giphy-js.
Sandbox at https://codesandbox.io/s/giphyreact-components-td1qo?file=/src/index.tsx. If I make the searchTerm the key of the component it reloads as you type. But put in the term "hello world" and open the Chrome Dev console and you can see all the requests to giphy being made.
I think we need a hook in componentWillUnmount to tell the carousel to stop fetching.
from giphy-js.
@kwasimensah can you debounce your input? I'm going to investigate this, because it shouldn't happen regardless, but here is a codesandbox with a debounced input that works:
https://codesandbox.io/s/giphyreact-components-search-example-0yrur?file=/src/index.tsx
from giphy-js.
@kwasimensah I removed the need for the debounce in version 1.0.7
. Should have tested without the debounce, my bad. Still good practice to have it though, to limit network requests while the user types.
I added an unmounted
instance variable to check when componentWillUnmount
so we don't setState
after we unmount which triggered the loop
from giphy-js.
Related Issues (20)
- How to pick the format having only the id? HOT 3
- Gif does not support keypress event HOT 3
- At Grid component: "Warning: Can't perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method." HOT 1
- Add support for AbortController HOT 1
- Consider making pingback and remote fonts configurable HOT 4
- Why there is no 'clips' type? HOT 1
- Carousel does not pass noLink property HOT 1
- Giphy React Grid component is not working HOT 4
- Please upgrade to react18 HOT 5
- SearchBar component make search button optional HOT 2
- Giphy/react-components 5.13.0 corporate proxy issue HOT 1
- renderGrid gifs positions are not set properly in lit HOT 2
- Focused Gif is not visually emphasized HOT 4
- Remove Grid not working HOT 1
- `require` in ESM build HOT 2
- `SyntaxError: Named export 'appendGiphySDKRequestHeader' not found. The requested module '@giphy/js-util' is a CommonJS module, which may not support all module.exports as named exports.` HOT 2
- It is advised to avoid ship styled-components in the build bundle. HOT 5
- React logging errors similar to "React does not recognize the `isFirstLoad` prop on a DOM element." HOT 1
- Next.js build fails: "Module not found: Can't resolve 'styled-components'" HOT 2
- Security concern: qs vulnerable to Prototype Pollution
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from giphy-js.