如何在承诺中设置反应钩子的值?

mah*_*lam 2 javascript request promise reactjs react-hooks

我从承诺中获取数据,我想将其设置在反应钩子中,它确实如此,但它会发出无限请求并重新呈现页面,我还希望填充一些特定的数据

const [rows, setRows] = useState([]);
useEffect(() => {
    async function fetchData() {
        myEmploiList({
            user: user.id
        }).then((data) => {
            //setRows(data);
            const newData = [];
            data.forEach((item, index) => {
                newData[index] = {
                    id: item._id,
                    name: item.name,
                    society: item.society
                };
                setRows(newData);
            });
        });
    }
    fetchData();
});
Run Code Online (Sandbox Code Playgroud)

Moh*_*ADI 5

您应该向useEffect钩子添加依赖项。这是这个钩子的第二个参数。

useEffect(() => {
// your code
}, [deps]);
Run Code Online (Sandbox Code Playgroud)

deps解释:

  • 无值:每次组件渲染时都会执行效果。
  • []:仅在组件第一次渲染时执行效果。
  • [value1, value2, ...]:如果任何值发生变化,将执行效果。

为了进一步阅读,我强烈推荐这篇博文