Reactjs 在渲染之前响应设置状态回调

Reactjs 在渲染之前响应设置状态回调,reactjs,Reactjs,我正试图得到一个警报弹出后,一定数量的卡被提请,但当试图使用回调设置状态的警报弹出之前,渲染发生 checkWin() { if (cards[Object.keys(cards)[12]].number === 0) { alert("GAME OVER"); } } drawCard() { let cardNumber; do { cardN

我正试图得到一个警报弹出后,一定数量的卡被提请,但当试图使用回调设置状态的警报弹出之前,渲染发生

checkWin() {
        if (cards[Object.keys(cards)[12]].number === 0) {
            alert("GAME OVER");
        }
    }

    drawCard() {
        let cardNumber;
        do {
            cardNumber = Math.floor(Math.random() * (Object.keys(cards).length));
        }
        while (cards[Object.keys(cards)[cardNumber]].number === 0);
        var card = cards[Object.keys(cards)[cardNumber]];
        card.number = card.number - 1;
        console.log()
        this.setState({
            card: card.images[card.number + 1],
            total: this.state.total -1,
            description: card.description
        }, this.checkWin());
    }

我尝试过将函数放入回调,但它也不起作用


编辑:在显示新卡之前会出现警报

通过将checkWin()更改为以下内容,它可以正常工作:


您正在错误地执行回调函数。试试这个

        this.setState({
            card: card.images[card.number + 1],
            total: this.state.total -1,
            description: card.description
        }, () => this.checkWin() );   ///-> see here

渲染发生之前是什么意思?当您在运行时调用该函数时,在屏幕更改以显示SetState中正在更改的新卡之前,会出现警报。在回调中将其更改为:
},()=>this.checkWin())已经尝试过了,在渲染之前它仍然会弹出渲染需要一些时间。您可以将弹出窗口延迟100毫秒
        this.setState({
            card: card.images[card.number + 1],
            total: this.state.total -1,
            description: card.description
        }, () => this.checkWin() );   ///-> see here