Table只有在rowKey发生变化时才会改变,因此rowKey需要改变
item => item.name+ Date.now()}/>
2 使用useEffect陷入无限循环
由于在useEffect中使用setState更新了数据,使页面重新经历componentDidUpdate生命周期,因此会再次调用useEffect,导致陷入循环中
解决办法:让useEffect绑定依赖项
useEffect(()=>{setData(data)
},[dialogData])
3 将antd表格导出为excel
使用js-export-excel,在使用import导入时,需要先在.d.ts文件中进行声明
//declare module 'js-export-excel'
let options = {}
options.fileName = ''
options.datas = [sheet
]
4 使用setState改变对象属性和数组属性
setUser({...user,name: 'xie'
})setArr([...arr,4])
5 useRef和useState的区别
可以直接在函数中获取到改变的ref值,useRef改变值不会引起页面的重新渲染,而useState会
const ref = useRef(0)const handleClick = ()=>{ref.current = ref.current + 1
}
6 对自定义组件使用ref
interface Props{children: ReactNode
}type Ref = HTMLInputElementconst MyInput= forwardRef((props,ref)=>{return ...props} ref={ref}/>
})
7 useReducer
useState中存在的问题依然存在
interface InitialState{name:string
}interface ActionType {type: 'change'| 'increment' | 'reset'payload: string | number
}const initialState = { name:'111'}
const reducer = (state:InitialState,action:ActionType):StateType=>{switch (action.type){case 'change':return [...state,name:'xie']breakdefault:break}return initialState
}const [state,dispatch]=useReducer(reducer,initialState)const handleChange = ()=>{dispatch({type: 'change'})
}
8 useContext
当多个组件同时使用同一个context,又不希望都变化
const NumContext = createContext(undefined)const Com = ()=>{const num = useContext(NumContext)return({num} )
}const Counter = ()=>{const num = useContext(NumContext)return num}>
}const Hook = ()=>{return(num}> )
}
9 useMemo
适用于有大量数据渲染时,依赖缓存
const visible = useMemo(()=>filterNodes(todes,tab),[todes,tab])
相关内容
热门资讯
新华视点|文旅新体验让传统“潮...
■当敦煌壁画遇上花灯敦煌灯会以“千年华彩 盛世敦煌”为主题,主要分为三个区域:敦煌夜市商业街、西域路...
玉米淀粉商品报价动态(2026...
生意社01月10日讯 交易商品牌/产地交货地最新报价玉米淀粉 食品级含量99河南汇亿海...
欧空局向“可回收”低头,计划魔...
炒股就看金麒麟分析师研报,权威,专业,及时,全面,助您挖掘潜力主题机会! (来源:IT之家)I...
“马”上尝鲜,进一步激发新春消...
(来源:劳动报)转自:劳动报依托供应链升级与“金牌挑手”严选体系,联华于2026新年之际,正式推出“...
华硕 CES 2026亮点速递...
在CES 2026这场科技盛会上,华硕携众多新品亮相。除了主板等核心PC硬件,迷你主机产品线也迎来重...