之前一直觉得,useEffect的第二个参数传空数组或者不传,没什么区别来着。今天试试确实是有所不同。
useEffect(func,[]):空数组类似componentDidMount的生命周期,在第一次渲染的时候执行func
useEffect(func): 传空,类似于componentDidMount 和 componentDidUpdate一起的生命周期,在组件的每次render执行的时候,func都会执行
import { useEffect } from 'react';
export default ({ name }) => {
useEffect(() => {
console.log('useEffect'); //这是一个子组建,只有第一次渲染的时候会打印,当name发生改变的时候,useEffect不会再次执行
}, []);
return <div>async test{name}</div>;
};
import { useEffect } from 'react';
export default ({ name }) => {
useEffect(() => {
console.log('useEffect'); //不传入第二个参数,当第一次渲染会执行打印,后续,每一次name有变化,都会打印
});
return <div>async test{name}</div>;
};