鍍金池/ 問答/HTML/ react目前遇到個問題

react目前遇到個問題

代碼結(jié)構(gòu)如下:
大致功能是,我開始有一個數(shù)字A從0遞增,當(dāng)A等于B時清除定時器,但現(xiàn)在,我的B的值要從接口里獲取到,然后就當(dāng)A===B這條就不成立了,雖然B已經(jīng)改變了。

 constructor(props) {
        super(props);
        this.state = {
            A: 0,
            B: 20
        };
      
    }
    
    tick() {

        this.setState((prevState) => ({
            A: prevState.A + 2
        }));
        console.log(this.state.B);
        if (this.state.A === this.state.B) {
            clearInterval(this.interval);
        }
    }
    
    componentWillMount(){
        
        CookieInfo.getIsLoggedIn()?
        puck.request('/api', {
            type: 'jsonp',
            data: {
            
            }
        })
            .then(res => {
                const {ok,status,statusText,body} = res;
                this.setState({
                   B:body.data.score
                });
                
            })
            .catch(err => {
                const { message, res, stack } = err;
                const { ok, status, statusText, body } = res;
                // console.log(body);
            }):
            '';
    }
    
    componentDidMount() {
        this.interval = setInterval(() => this.tick(), 50);

    }
    
回答
編輯回答
挽歌

A===B這條就不成立了,雖然B已經(jīng)改變了

A===B這條為什么不成立呢?是因為你網(wǎng)絡(luò)請求太慢了?然后A早已超過這個值了?

2017年5月3日 01:25
編輯回答
卟乖

后來發(fā)現(xiàn)原來是問題出在:
`this.setState((prevState) => ({

        A: prevState.A + 2
    }));`

A始終是偶數(shù)。。。。。。

2017年4月9日 10:46
編輯回答
尛曖昧

首先你三元運算符如果沒有else可以用 與&& 操作。
同步更新state可以放在setState回調(diào)里

tick() {
  const self = this; 
  this.setState((prevState) => ({
    A: prevState.A + 2
  },
    () => {
      if (self.state.A === self.state.B) {
        clearInterval(self.interval);
      }
    }));
  console.log(this.state.B);
}
2017年11月30日 02:43