useCallBack的本质工作不是在依赖不变的情况下阻止函数创建,而是在依赖不变的情况下不返回新的函数地址而返回旧的函数地址。不论是否使用useCallBack都无法阻止组件render时函数的重新创建!!
usecallback的依赖项为空数组表示usecallback中的数据只被缓存一次,如果没有第二个依赖项表示usecallback每次都会重新缓存,等于不起作用
2.父组件传useState值给子组件,子组件接收到的值不是最新的:
检查子组件中useEffect的依赖项是否正确,依赖项最好是取父组件更新之后需要的新值
3.修改useRef
返回的值并不会引起react
进行重新渲染执行函数
4.useContext数据流的使用(相当于是将数据挂载在window上,实现全局变量的效果):
1.const ProviderTabContext = React.createContext({}) 2.const providerVal = { info,setInfo,...} <ProviderTabContext.Provider value={providerVal}/> 3.const {info} = useContext(ProviderTabContext)
5.设置阴影效果:
box-shadow: 0 0 10px rgba(204, 204, 204, 0.815);
6.useRef:
useRef只是一个普通的js对象,当ref.current的值改变后,React并不会重新渲染你的组件,他相当于你当前组件创建的全局变量。