为什么`this.setState`不能在IE中工作?

时间:2017-10-16 14:26:19

标签: reactjs semantic-ui gatsby

我正在使用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构建过程中没有错误。

1 个答案:

答案 0 :(得分:0)

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