子组件在父组件循环调用,子组件的数据是固定的,想做优化,这样做对吗?-灵析社区

疯狂的搬运工

问题1 子组件是个select ,数据都是从api获取,每次都是固定的内容。 父组件中的列表需要大量调用这个子组件,每次这个组件都需要调用api获取数据,每次数据都是一样,这个地方是不是需要优化? 问题2 如果需要优化的话,从react官网找了一下,简单做了更改,理论上每次excuteCallBack 是同一个引用,但是debug的时候 useEffect每次被调用没法证明excuteCallBack 是不是同一个引用呢? 理解不足,希望解答一下。 import React, { useCallback, useEffect, useState } from "react"; import { Team, User } from "@/type/user"; import { Select } from "antd"; import { getTeams } from "@/api"; const { Option } = Select; interface Props { record: User; } const CusSelect: React.FC = ({ record }) => { const [teams, setTeams] = useState>(); const excuteCallBack = useCallback( () => { return getTeams() }, [] ) useEffect(() => { console.log('excuteCallBack reference:',new Date(), excuteCallBack); async function excute() { try { let rest = await excuteCallBack(); //debugger setTeams(rest.data); } catch (error) { console.log(error); } } excute(); }, [excuteCallBack]); return ( { alert(JSON.stringify(record) + value); }} > {teams?.map((item) => ( {item.team_name} ))} ); }; export default CusSelect;

阅读量:119

点赞量:0

问AI
先说问题1,确实可以优化一下,直接不发起请求,做个 fetch 的 cache 就完事了 第二个问题不太懂,但是我理解你做个节流触发 action,数据统一存在 store 就行 你这种缓存组件的操作应该都不大行。