根据代码提供的信息,可以看出lastActiveTab
变量在组件渲染时是为空的。这是因为lastActiveTab
的赋值操作发生在一个effect钩子之后。
要确保在页面加载时就能获得非空的lastActiveTab
,可以将赋值逻辑移到useEffect钩子内部,确保数据已经获取到后再进行赋值操作。例如:
const [hotelNewTagInfo, setHotelNewTagInfo] = useState([]);
const [activeTab, setActiveTab] = useState('');
const [tabsCode, setTabsCode] = useState('');
const [tabsKey, setTabsKey] = useState('');
let lastActiveTab;
useEffect(() => {
oneLeveolInfo({ type: 'HotelTagType' }).then(res => {
console.log(res?.HotelTagType[0]?.code,'duhao___res');
setTabsCode(res?.HotelTagType[0]?.code);
setHotelNewTagInfo(res.HotelTagType);
const selectedItem = res.HotelTagType.find(item => item.code === activeTab);
if (selectedItem) {
setTabsCode(selectedItem.code);
setTabsKey(activeTab);
}
lastActiveTab = activeTab;
});
}, []);
const handleTabChange = key => {
const selectedItem = hotelNewTagInfo.find(item => item.code === key);
if (selectedItem) {
setTabsCode(selectedItem.code);
setTabsKey(key);
}
setActiveTab(key);
};
console.log(lastActiveTab, 'duhao——————————');
通过将赋值逻辑移入effect钩子内部,并将lastActiveTab
声明为函数组件的变量,可以确保在页面加载时能够获取到非空的lastActiveTab
值。
内容由零声教学AI助手提供,问题来源于学员提问