gpt4 book ai didi

javascript - 避免 useEffect 在第一次加载时渲染?

转载 作者:行者123 更新时间:2023-11-29 22:50:54 28 4
gpt4 key购买 nike

我知道 useEffect 是 componentDidUpdatecomponentDidMount 的“组合”?但是因为我已经传入了一个dependency,为什么它在第一次加载时仍然加载?

import React, { useState, useEffect } from "react";
import { Button, Table, Column } from "antd";

const initData = [
{
id: 1,
name: "James"
},
{
id: 2,
name: "John"
}
];

function MyTable({ changeDataFlag }) {
const [data, setData] = useState(initData);

useEffect(() => {
setData(
data.map(o => ({
id: "Titus",
name: "Paul"
}))
);
}, [changeDataFlag]);

return (
<Table dataSource={data} rowKey={data => data.id}>
<Column title="Id" dataIndex="id" />
<Column title="Name" dataIndex="name" />
</Table>
);
}

export default MyTable;

我希望在单击更新按钮之前看到 James 和 John 在 table 上

https://codesandbox.io/s/hello-antd-t29cs

最佳答案

默认 useEffect 第一次运行,然后在依赖项发生变化时运行。

你可以这样做,

useEffect(() => {
if(changeDataFlag){
setData(
data.map(o => ({
id: "Titus",
name: "Paul"
}))
);
}
}, [changeDataFlag]);

关于javascript - 避免 useEffect 在第一次加载时渲染?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57532730/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com