react hook,useState如何实现setState({}, ()=>{})这种先赋值再执行回调的方法?

发布于 2022-09-13 01:11:51 字数 62 浏览 12 评论 0

我现在需要先赋值,再执行方法,类似原来的setState({}, ()=>{}),请问正规的写法是什么?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

表情可笑 2022-09-20 01:11:51

其实不太明白这种情况使用场景
你既然都知道要set的值是什么了 为什么还要等他赋值完成再进行后续操作呢

吃不饱 2022-09-20 01:11:51
const handleClick = () => {
    fetch('something').then(data => {
        setSomething(data.something)
        
    })
}

useEffect(() => {
    console.log(">>>", something)
}, [something])

这是最简单直接的。

逻辑上this.setState的第二个参数,可能是因为这种情况

// 
someFunc() {
    // 需要用到this.state.name
}

handleChange() {
    this.setState({name: 'rose'})
    this.someFunc()
}

someFunc可能无法使用到正确的name,才需要转换成setState的callback中调用。那从逻辑上说someFunc是依赖name的正确值执行争取的逻辑,那么someFunc应该耦合name的值,而不是this.state.name。所以还可以从设计上让someFunc接受一个参数:

// 
someFunc(name) {
    // 依赖传进来的name执行逻辑
    // 实在不行还可以兜底
    name = name === undefined ? this.state.name : name
}

handleChange() {
    let name= 'rose'
    this.setState({name})
    this.someFunc(name)
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文