react hooks setState callback

263 阅读1分钟
this.setState({state1:false},()=>{console.log(this.state.state1)})

那么hooks如何callback执行获取修改之后的state呢

setState( { name: "Michael" }, () => console.log(this.state) );

然而setState并没有这样的实现

所以

const [counter, setCounter] = useState(0);

const doSomething = () => { setCounter(123); }

useEffect(() => { console.log('Do something after counter has changed', counter); }, [counter]);

如果初始化不想执行呢

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

const [counter, setCounter] = useState(0);
const didMount = useRef(false);

const doSomething = () => {
  setCounter(123);
}

useEffect(() => {
  // Return early, if this is the first render:
  if ( !didMount.current ) {
    return didMount.current = true;
  }
  // Paste code to be executed on subsequent renders:
  console.log('Do something after counter has changed', counter);
}, [counter]);

那么redux呢?dispatch之后的值获取?为什么setState不设计 callback呢?