Lucifier129 / react-lite

An implementation of React v15.x that optimizes for small script size
MIT License
1.73k stars 100 forks source link

IE10-11, setState does not mutate the state #98

Open max-ch9i opened 7 years ago

max-ch9i commented 7 years ago

setState inside a timeout callback does not mutate the state. Encountered in IE10 and IE11.

componentDidMount() {
    setTimeout(_ => this.setState({param: true}), 1000);
}

When I switched to the original react, it worked as expected. Could it be due to issues with transpiling?

Lucifier129 commented 7 years ago

I checked it in my machine, the state of component is changed by setState in IE9 & IE10 & IE11, the code is in bleow

// use create-react-app
import React, { Component } from 'react-lite'
import ReactDOM from 'react-lite'

class App extends Component {
    state = {
        count: 0
    }
    componentDidMount() {
        setTimeout(_ => this.setState({count: 1}), 1000);
    }
    render() {
        return <div>{this.state.count}</div>
    }
}

ReactDOM.render(<App />, document.getElementById('root'))
max-ch9i commented 7 years ago

@Lucifier129 Thank you for checking. I'll try to isolate this bit of code and try again.