React Native Redux:this.setState不会改变状态

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

this.setState({device})根本没有更新状态,除非我用“this.state.device = __”强制它,但是它仍然是一个问题,因为组件没有重新渲染。我尝试使用回调函数,例如:

this.setState({device: selectedDeviceId}, () => {
    console.log(this.state.device)
})    

但代码根本没有记录,这表明甚至没有调用setState。

class Stats extends React.Component {
  state = {
    viewType: 'day',
    dt: moment(),
    device: {}
  }
  getDevice = () => {
    const devices = this.props.devices || []
    const selectedDeviceId = this.props.selectedDeviceId

    devices.forEach((d) => {
      if (d._id === selectedDeviceId) this.setState({device: d})
    })
    if (!this.state.device._id && devices.length) {
      this.setState({device: devices[0]})
    }
    this.getUsage()
  }

  componentWillMount () {
      console.log('Enter StatsScreen.componentWillMount')
      let dt = this.state.dt
      const date = moment(dt).format('YYYY-MM-D')
      console.log(date)
      this.getDevice()
  }
}
react-native redux native setstate
1个回答
1
投票

问题是你没有使用React Native状态你正在使用你所谓的状态变量。通过编写构造函数生命周期方法并将this.state =放在其中进行初始化来解决此问题。

顺便说一句,在willMount生命周期方法中做了这样的事情,在didMount中执行它,然后你就不会阻止UI。

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