猿问

react里render里面调用方法怎么会疯狂执行?

代码运行后疯狂执行,不知道为什么?或者说有没有更好的写法?

代码如下:


//从父组件接收

componentWillReceiveProps(nextProps) {


        this.setState({

            code: nextProps.capacityBlockIndex

        })

}


request = (str) => {

        console.log("done" + str);  //控制台疯狂的输出

        ajax({

            url: '//api',

            jsonp: 'callback',

            data: {

                'capabilityCode': str

            },

            success: (res) => {


                this.setState({

                    taskArr: res.values

                });

                return;

            },

            error: () => { }

        });


    }

    

    

    render(){

        if(this.state.code === 0){

            this.request('infor_display_ability');

        }

    }


慕勒3428872
浏览 2462回答 2
2回答

互换的青春

你在render里调用request发起ajax请求 成功后setState然后重新渲染render调用request。。。开始循环

富国沪深

不能在这个生命周期中componentWillReceiveProps做setState操作。这个钩子本身的触发条件就是state,或者props改变就执行,你这样写,肯定会一直相互反复触发的。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答