首页 > 解决方案 > 有没有办法在反应钩子依赖数组中使用 JS 休息语法?

问题描述

我有这个 useEffect React 钩子:

import {useEffect, useState} from 'react';

const [state, setState] = useState();
useEffect(() => {
    api.post(url, state)
        .then(response => {
            setState(
                ...state,
                response: response.data
            )
        })
}, []);

使用状态作为 API 请求的有效负载,并state使用响应进行更新。

显然,如果我放入state钩子依赖数组,我们有一个无限循环(因为stateAPI 调用后更新),但我需要调用 API 并在state.response每次状态更改时更新。

是否可以在state值更改时更新,除了state.response

我试过了 :

const {response, ...rest} = state;

并放入rest依赖项,但这不起作用

谢谢您的帮助

标签: reactjsrestdependenciesreact-hooks

解决方案


你可以做类似的事情

import React, {useEffect, useState} from 'react';

const [state, setState] = useState({
    apiParam: {},
    response: null
  });

useEffect(() => {
    api.post(url, state.apiParam)
        .then(response => {
            setState(state=>({
                ...state,
                response: response.data
             })    
            )
        })
}, [state.apiParam]);

推荐阅读