【发布时间】:2021-02-11 16:15:03
【问题描述】:
这就是我的应用现在的样子:
搜索和排序功能是动态工作的,只要我输入一个字母,它就会找到匹配项,但会重新呈现所有内容。
如果我输入“饥饿”,它会找到饥饿游戏电影,但它会在已有图像时获取图像和渲染。有没有办法让这个过程只做一次,这样我就不用等待每次搜索、每次排序?我使用 Redux,所以数据来自 store,store 从本地 json 文件获取数据。
我想过存储在本地存储上,但我想不通。如您所见,没有 ComponentDidMount 或 Hooks。
这是该页面的代码:
import React from "react";
import "./MoviesAndSeries.css";
import ListShowItem from "./ListShowItem";
import { getVisibleShows } from "../Redux/Selector";
import { connect } from "react-redux";
import FilterShowItems from "./FilterShowItems";
const Movies: React.FC = (props: any) => {
return (
<div className="movies">
<FilterShowItems />
{props.movies.map((movie: any) => {
return <ListShowItem key={Math.random()} {...movie} />;
})}
</div>
);
};
const mapStateToProps = (state: any) => {
return {
movies: getVisibleShows(state.movies, state.filters),
filters: state.filters,
};
};
export default connect(mapStateToProps)(Movies);
【问题讨论】:
-
再写“getting images”的时候,是不是在向服务器请求图片?这些图片不应该被浏览器自动缓存吗?
-
@terrymorse 看起来它正在从该网址一次又一次地请求图像。否则,同一张图片不应该让我等待它加载。还是只是正常现象?
-
According to the React Docs 对 props 的任何更改都会触发更新,从父级到子级向下发送,因此,您的过滤器会更改,这意味着整个组件将再次重新渲染。更重要的是,你在哪里传递
props.filters我没有看到它传递给FilterShowItems。 -
@İlker 你的意思是网络请求?是的,它们是“请求的”,但它们会从缓存中检索,如果您使用的是 chrome,请查看网络选项卡以了解更多信息。
-
@Xavier 我正在使用 Redux,所以它来自 connect() 函数。
标签: javascript json reactjs redux