React + Ant Design 4 使用过程中问题搜集

1. Anchor 描点不生效

原因:

1. 滚动的window没有滚动事件

2. 待滚动的描点,未在页面中标记

解决方案:

1. getContainer=()=> document.body 给Anchor组件指定绑定的容器

// 默认指定的是window
...
<Anchor getContainer=()=> document.body>
...

2. 元素需要标记的id="描点不包含#" 才能生效

// href指定的dome,  元素内指定id=dome
<Anchor>
    <Anchor.Link title="title" href="#dome"/>
...
</Anchor>
...
<div id="dome">
...
</div>

2. Anchor 每次点击都会触发路由变化

解决方案:

const handleClick = (e)=>{
e.preventDefault();
}
...
<Anchor onClick={handleClick}>
...
</Anchor>

3. react报错:Can't perform a React state update on an unmounted component

原因: 由于组件被销毁后,还在调用更新state的逻辑

解决方案: 1、 class类组件,可以重写componentWillUnmount

class Component extends React.Component{
....

componentWillUnmount(){
    this.setState = ()=>{}
}

...

 2、 function组件的实现方法,这个有点要求

const [loading,setLoading] = useState(false);

useEffect(()=>{
    // 这个只能控制当前回调函数内的作用域
    let ignore = false;
    
    const request = async ()=>{
        // ...    
        if(ignore){ // 如果已卸载不调用任何useState
            return;
        }
        setLoading(true);
    }
    
    return ()=>{
        ignore = true;
    };
}, []);
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值