Ich bin neu zu Reagieren und habe jetzt Probleme.Fehlender Statuswert nach Funktionsbindung in React
export default class Header extends React.Component {
constructor(props) {
super(props)
this.state = {
variants: props.variants,
background: props.variants[0].background
}
}
setTimer() {
const { variants } = this.state
clearTimeout(this.timeout)
this.timeout = setTimeout(this.updateBackground.bind(this), 1000)
}
updateBackground() {
console.log(`Keys ${this.state.variants}`);
const { variants } = this.state
const { background } = variants[parseInt(Math.random() * 5)]
setState({
background: background
}, this.setTimer)
}
componentDidMount() {
this.setTimer()
}
render() {
const { background } = this.state
return (
<div className="header-image"> <img src={ background } /> </div>
)
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
Mein Problem ist: Zustand zu ändern, wenn in wenigen Sekunden
Ich habe Komponente, die einen Gegenstand als Requisiten und einige Funktionen fängt nach
this.updateBackground.bind(this)
Anruf, updateBackground hat alle Statuswerte verloren, z
this.state.variants
definiert ist, aber es ist nicht mehr enthält Objekte, z
this.state.variants[0] === undefined
Erklären Sie mir bitte, was ich falsch mache :)
Es sollte 'this.setState' – Li357
warum Sie nicht verwenden setInterval statt SetTimeout? – vijayst
@AndrewLi, Problem ist früher als this.setState, this.state.variants [0] .background ist undefined –