ZBLOG

父组件 useEffect(() => { if (props.tabsTitle === '认证标签' || props.tabsTitle === '会员权益标签') { labelDefinitionsList(props.tabsCode, '', c...

根据你提供的代码,子组件中的labelDefinitionsList代码会在每次父组件的props变化时执行。这是因为你在useEffect的依赖项中包含了props.tabsTitleprops.tabsCodelastTwoLevelCode,只要这些值有任何一个发生变化,就会触发子组件中的效果函数。

如果你想要避免重复执行多次,可以考虑添加额外的条件来限制执行次数。例如,在子组件中使用状态来记录上一次执行的参数,并在新参数与旧参数不同时才调用labelDefinitionsList函数。下面是一个示例:

const [prevProps, setPrevProps] = useState({});

useEffect(() => {
    if (
        (props.tabsTitle === '认证标签' || props.tabsTitle === '会员权益标签') && 
        (prevProps.tabsTitle !== props.tabsTitle || prevProps.tabsCode !== props.tabsCode)
    ) {
        labelDefinitionsList(props.tabsCode, '', current, pageSize);
    } else if (
        (prevProps.lastTwoLevelCode !== lastTwoLevelCode || prevProps.tabsCode !== props.tabsCode)
    ) {
        labelDefinitionsList(props.tabsCode, lastTwoLevelCode, current, pageSize);
    }

    setPrevProps({
        tabsTitle: props.tabsTitle,
        tabsCode: props.tabsCode,
        lastTwoLevelCode: lastTwoLevelCode
    });
}, [props, lastTwoLevelCode]);

通过使用状态来存储前一次的属性值并进行比较,可以有效地控制labelDefinitionsList的执行次数。请根据实际需求进行适当调整和修改。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=16533

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?