this.setState ({device}) aktualisiert den Status überhaupt nicht, es sei denn, ich erzwinge es mit "this.state.device = __", aber es wäre immer noch ein Problem, da die Komponente nicht erneut gerendert wird. Ich habe versucht, eine Callback-Funktion, wie:React Native Redux: this.setState ändert nicht den Status
this.setState({device: selectedDeviceId},() => {
console.log(this.state.device)
})
aber der Code überhaupt nicht einloggen, was darauf hindeutet, dass setState nicht einmal genannt werden.
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()
}
}
können Sie die console.log teilen. Und der Wert von "! This.state.device._id && devices.length", um sicherzustellen, dass die if-Anweisung als wahr ausgewertet wird. –
Es wird mehr Idee geben, wenn Sie Ihre Renderfunktion auch einfügen können –
Warum ist Ihr "componentDidMount" außerhalb Ihrer Statistikklasse? –