为什么`this.setState`不能在IE中运行?

问题描述 投票:0回答:1

我正在使用this.state管理侧边栏可见性和React-Table加载状态,如下所示。 (我正在用React.js,Gatsby和semantic-ui-react建立网站。)

class SidebarRightOverlay extends Component {

  constructor(props){
     super(props)
     this.state = {
         visible: false,
         loading: true
     }
  }

  componentDidMount(){
     this.setState({loading: false})
  }

  render() {
    const toggleVisibility = () => this.setState({ visible: !this.state.visible })
    const { visible } = this.state
    return (
      <div>
        <Button onClick={this.toggleVisibility}>Toggle Visibility</Button>
            .
            .
            .
            .

这种方式应该是正常的而不是错误的,因为在单击按钮后出现侧边栏并且在Chrome和Firefox中加载表格数据后加载桌面上的显示消失。

但是,它们在IE11,Edge和wine-IE中不起作用。我认为this.setState不适用于IE11,Edge和wine-IE。请告诉我如何让他们工作。

顺便说一句,我测试了由gatsby build构建并由firebase deploy部署的网站。

添加:抱歉。此代码通过复制和粘贴制作,以便在此处发布。我犯了一个错误。实际代码中没有这个。请假设Gatsby构建过程中没有错误。

reactjs semantic-ui gatsby
1个回答
0
投票

这不是正确的,因为你把this.setState放在render()方法中,这不是正确的,因为当状态通过this.setState({...})更新时,render()方法再次被调用

© www.soinside.com 2019 - 2024. All rights reserved.