如何在每次useEffect调用后停止状态返回初始状态?

时间:2019-06-21 11:34:12

标签: reactjs react-hooks use-effect

在我的customHook中,我具有一个onchange事件处理程序,该处理程序在下拉菜单中设置所选项目的values状态。然后基于values的状态,我想在useEffect中每隔几秒钟获取一些数据。但是,在每次useEffect调用之后,都会调用values状态的初始值而不是当前状态。

我尝试在代码中使用useRef作为拉出当前值,但它仍返回初始值。

const [values, setValues] = useState({
        name: "",
        myid: "my-id"
    });

const valuesRef = useRef(values)

const [waitState, setWait] = useState(0) 

//state changers
function handleChange(event, id) {
    setValues({
          ...values,
          name: event.target.value,
          myid: id.props.id,
    });
}

useEffect(() => {         
    valuesRef.current = values

    // logs twice, the first log returns the current state, which I want, 
    // the second logs the initial state, which is useless to me
    console.log(values) 

    let wait = () => {
        setTimeout(() => setWait(waitState+1), 10000)
    }

    async function fetchData() {
        wait()
        //fetch some data
    }

    fetchData()
    }, [waitState, values])}

我只是希望它返回values状态的当前值

0 个答案:

没有答案