如下方代码所示,我想用useEffect监听arr的变化作条件渲染,由于useEffect的第二个参数不适合使用引用类型,所以将数组的长度用作了依赖项,点击按钮后更新arr,然后useEffect监听到arr的变化触发重新渲染。但结果是useEffect在数组更新后并没有执行,期望的内容无法渲染出来。
请问我这里是哪里写得有问题吗,有什么解决办法呢?
const demo: React.FC = () => {
const [arr, setArr] = useState([]);
useEffect(() => {
console.log(arr); // 不打印。。
}, [arr.length]);
const onClick = () => {
setArr(() => {
arr.push({name:"张三",sex:"男"});
return arr
})
}
return (
<>
<button onClick={onClick}>按钮</button>
<div>
{arr && arr.length !== 0 && (
<div>你好</div>
)}
</div>
</>
)
};
export default demo;
1、setArr的时候应该生成一个新的数组
2、useEffect第二个参数就可以直接使用arr了