美文网首页让前端飞Web前端之路
react hooks 踩坑记setState之visible

react hooks 踩坑记setState之visible

作者: 嘻哈章鱼小丸子 | 来源:发表于2020-07-20 18:55 被阅读0次

first,show my code!

index.jsx:

 const [visible, setVisible] = useState(false);
 <Button type="link" onClick={() => {
                        setRecord(record)
                        setVisible(true)
                    }}>详情</Button>
 {visible ? <Detail visible={visible}
                                onClose={() => setVisible(false)}
                                record={record} /> : null}

Detail.jsx:

    useEffect(() => {
    function getDetail() {
        const res = ask("getDetail", {
            params: {
                times: record.times,
                id: record.id
            }
        })
        if (res.errorCode === 200) {
            setDetail(res.data);
        } else {
            message.error(res.msg|| '获取详情失败!');
        }
    }
        getDetail();
    }, []);

结果就是:如果第一次请求失败了,errorCode不是200,那详情弹框永远弹不出来。因为visible永远是true,没有改变,function不会重新render
-_-

排查了下,果断在报错后设置正确的visible,加上onClose方法:

 else {
            message.error(res.msg|| '获取详情失败!');
            onClose();
        }

成功,在报错状态下也可以正常弹框了!

总结:使用setState类的hooks一定要正确处理state,尤其是visible这类比较明显的。侧面也体现了react diff能力的强大。

相关文章

  • react hooks 踩坑记setState之visible

    first,show my code! index.jsx: Detail.jsx: 结果就是:如果第一次请求失败...

  • react的setstate原理

    之前写react的时候,踩了几次坑发现setstate之后state不会立刻更新,于是判定setstate就是异步...

  • react hooks 踩坑

    1. useState返回的state只会在组件第一次初始化的时候被计算出来 比如你的state依赖于props,...

  • 原生App植入React Native 踩坑记

    原生App植入React Native 踩坑记 为什么我踩坑了有一个需求要去可以在当前工程的feature/RN ...

  • HandsonTable hooks 踩坑记

    hooks是HandsonTable中的钩子。可以添加或者注册一些事件。这是官网的地址 背景 在Vue单页面应用项...

  • 我的收藏2020-05-31

    站在巨人们的肩膀上,努力学习~ 精选文章 App React Hooks踩坑分享 一波 N 折的携程酒店 Swif...

  • React Native WebView踩坑记

    React Native WebView踩坑记 在使用React Native开发应用时,有些第三方的页面需要在W...

  • 【react native】 tab导航栏吸顶 能保持每个ta

    如图: 首先我的tab切换用的react-native-scrollable-tab-view 踩坑记: 方案1:...

  • react 踩坑记

    预览权限不能编辑 项目中是个图,如果控制里面的节点很麻烦,那么久想办法遮罩,最简单的方式就是使用伪类,但是伪类用j...

  • React:踩坑记

    持续更新中。。。。。。 组件销毁坑 报错信息 需求是点击左上角的关闭按钮,注销本次的登录信息,结果出现以下报错信息...

网友评论

    本文标题:react hooks 踩坑记setState之visible

    本文链接:https://www.haomeiwen.com/subject/aziykktx.html