记录学习react的一些内容

由于是在公司实际项目中学习,所以不是很完整 需要一点一点的学

1.React.useState 类似于vue中的ref 可以修改状态 但是是异步的 感觉不好用 

const [wishData, setWishData] = React.useState<any>(null); 只能使用setxxx来修改

2.useEffect(()=>{},[]) 类似vue中的onMounted 但是其内部不能进行异步操作
  // 监听 homeConfigs 的变化,当其更新时调用 getUserInfo
  useEffect(() => {
    setLoading(true);
    if (homeConfigs && homeConfigs.length > 0) {
      console.log(homeConfigs, 'homeConfigs');
      getUserInfo();
    }
  }, [homeConfigs]); // 依赖项为 homeConfigs
/**
*如果是[]就是一开始执行 这样看来也像watch的
*/
3.React.useMemo(()=>{},[xxx])仅当其中一个依赖项发生变化时才会重新计算记忆值 vue--watch
4.  const claimedData = React.useRef<any>([]); 这个会有一个.current 是响应式的

5.useMemo 是 React 中的一个 Hook,用于在组件渲染过程中缓存计算结果,从而避免重复计算、提高性能
        useMemo 会根据依赖数组中的值(通常是某些 props 或 state)来决定是否重新计算值,只有依赖发生变化时才会重新计算,否则返回上次缓存的结果

遇到的一些问题的解决

1.使用ant的react版本,table的展开问题

        问题:初始情况下,需要不展开子项,当通过搜索时,需要自动展开搜索后的列表项;

        有坑:

1、defaultExpandAllRows 初始时,是否展开所有行 这个不行因为这个是在初始时,那个时候内容为null  解决:使用key来每次更新key时重新渲染table 但是我这个使用了导致初始值丢失 所以没有使用

2、使用expandedRowKeys(展开的行,控制属性)+ onExpandedRowsChange(展开的行变化时触发) 这个我一开始不知道怎么设置他的expandedRowKeys ,后面我直接使用onExpandedRowsChange返回的参数查看内容是什么 对应的是我的数据id(如果不行就可以动态添加一个key),所以我就采取了这个方法,去写一个expandedRowKeys数组 在请求后去修改这个数组 并在onExpandedRowsChange使用参数来维护该数组

代码如下


const [expandedRowKeys, setExpandedRowKeys] = React.useState([]);

expandable: (currentTabs === WishStatus.Claimed ||
    currentTabs === WishStatus.Completed) && {
    expandedRowKeys,
    onExpandedRowsChange: (expandedRows) => {
    console.log(expandedRows, 'expandedRows ---------- 开始咯');
    // 如果expandedRowKeys中有expandedRows就移除 没有就添加
    // 这里不用考虑 expandedRows 就是应该为展开的id数组 
    setExpandedRowKeys(expandedRows as any);
   },
},

// 存在搜索内容 并且是已认领或已完成
if (params?.keyword && [WishStatus.Claimed, WishStatus.Completed].includes(currentTabs)) {
  setExpandedRowKeys(res.list.map((item) => `${item.id}pid`));
} else {
  setExpandedRowKeys([]);
}
//table的展开参数

目前也只是用到这些 等后续有更多的再来记录 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值