如何使用 React.js 实时搜索 Giphy 的 GIF?
How can I search Giphy's GIF live with React.js?
基于official Giphy demo(CodeSandBox),我想为Giphy GIFs创建一个实时搜索功能。
下面是它的演示。
search demo(CodeSandBox)
它将关键字保存为状态,并将关键字状态传递给giphyFetch的搜索方法。
但是没有显示搜索结果。
请问是demo中的代码有问题,还是有解决办法?
谢谢。
源代码
const giphyFetch = new GiphyFetch("sXpGFDGZs0Dv1mmNFvYaGUvYwKX0PWIh");
function App() {
const [keyword, setKeyword] = useState("");
const fetchGifs = (offset: number) =>
giphyFetch.search(keyword, { offset, limit: 10 });
return (
<>
<p>
<img src="./logo.gif" width="200" alt="Powered by GIPHY" />
</p>
<p>
input keyword
<input type="text" onChange={e => setKeyword(e.target.value)} />
</p>
<h4>search result</h4>
<Carousel fetchGifs={fetchGifs} gifHeight={200} gutter={6} />
</>
);
}
Carousal 在挂载时执行 fetchGifs
一次。所以你需要根据你的输入强制重新挂载onChange
。您可以通过添加动态密钥
来做到这一点
像这样
...
<>
<p>
<img src="./logo.gif" width="200" alt="Powered by GIPHY" />
</p>
<p>
input keyword
<input
value={keyword}
type="text"
onChange={e => setKeyword(e.target.value)}
/>
</p>
<h4>search result</h4>
<Carousel
key={keyword}
fetchGifs={() => fetchGifs(5)}
gifHeight={200}
gutter={6}
/>
</>
...
基于official Giphy demo(CodeSandBox),我想为Giphy GIFs创建一个实时搜索功能。
下面是它的演示。
search demo(CodeSandBox)
它将关键字保存为状态,并将关键字状态传递给giphyFetch的搜索方法。
但是没有显示搜索结果。
请问是demo中的代码有问题,还是有解决办法?
谢谢。
源代码
const giphyFetch = new GiphyFetch("sXpGFDGZs0Dv1mmNFvYaGUvYwKX0PWIh");
function App() {
const [keyword, setKeyword] = useState("");
const fetchGifs = (offset: number) =>
giphyFetch.search(keyword, { offset, limit: 10 });
return (
<>
<p>
<img src="./logo.gif" width="200" alt="Powered by GIPHY" />
</p>
<p>
input keyword
<input type="text" onChange={e => setKeyword(e.target.value)} />
</p>
<h4>search result</h4>
<Carousel fetchGifs={fetchGifs} gifHeight={200} gutter={6} />
</>
);
}
Carousal 在挂载时执行 fetchGifs
一次。所以你需要根据你的输入强制重新挂载onChange
。您可以通过添加动态密钥
像这样
...
<>
<p>
<img src="./logo.gif" width="200" alt="Powered by GIPHY" />
</p>
<p>
input keyword
<input
value={keyword}
type="text"
onChange={e => setKeyword(e.target.value)}
/>
</p>
<h4>search result</h4>
<Carousel
key={keyword}
fetchGifs={() => fetchGifs(5)}
gifHeight={200}
gutter={6}
/>
</>
...