我们想要通过set修改值,然后拿到新值,没有生效
const initTabs = [{
tab:'首页'
}]
const [tabList, setTabList] = useState(initTabs)
useEffect(()=>{
setTabList([])
console.log(tabList)//还是initTabs的值并没有置空
},[paths])
有可能你会想到是不是加个settimeout,延迟去获取值?这样也没用的,initTabs
s是引用类型,tabList维持了对initTabs
的引用,这样改是不生效的。
可以通过slice来克隆一份initTabs,来断开他们的引用关系,将初始的set操作改成下面这样就可以了:
const [tabList, setTabList] = useState(initTabs.slice(0))