繁体   English   中英

Safari 中的状态更改后,React 组件不会重新渲染

[英]React component doesn't rerender after state change in Safari

在我在 Gatsby 中构建的 React 应用程序中,我有以下代码片段的形式:

<label id="politykaModal" onClick={e => this.handleChangeRatio(e)}>
     <button id="politykaModal" name="polityka-prywatnosci" className={this.state.politykaModalError ? "redBorder" : ""}>
           <div id="politykaModal" className={this.state.politykaModal ? "checked" : ""}/>
     </button>
     Accept privacy policy
</label>

当用户单击标签时,假设将内部 div 的类更改为.checked (更改内部 div 的背景颜色)。 除了 Safari,它在所有浏览器中都能正常工作。

这是我的handleChangeRatio()方法:

handleChangeRatio(e) {
        e.preventDefault();
        let name = e.target.id;

        if(name === "politykaModal") {
            this.setState((prevState) => {
                return ({
                    politykaModal: !prevState.politykaModal
                });
            });
        }
    }

有趣的是状态正在发生变化,但类没有(内部 div 的背景颜色保持不变)。 也许问题在于重新渲染组件,但为什么它在其他浏览器中工作正常?

提前致谢。

我认为您不需要使用prevState ,您可以在状态之间切换:尝试:

    if(name === "politykaModal") {
        this.setState({politykaModal: !this.state.politykalModal)
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM