无法在componentWillRecieveProps调度上比较道具

时间:2019-02-17 22:33:39

标签: javascript reactjs react-redux

我有一个无限循环,它在执行我想做的事情时,会获取我的更新数据,而不会一遍又一遍地处理它,而刷新速度却非常慢。

我已经阅读了一些东西,并尝试检查一下道具是否已更新,但无法正确显示...

我的无限循环...

componentWillReceiveProps(nextProps) {
    whenGapiReady(() => {
        const { Id } = this.props;
        this.props.fetchFileUploads(Id)
    });
}

试图将其更改为:

componentWillReceiveProps(nextProps){
    if(nextProps.Id !== this.props.Id)
    dispatch(this.props.fetchPlayerFileUploads(Id))
}

没有成功,它现在什么也不做。我已经错过了gapi,因为我可以将其添加回去。

任何有助于停止循环的帮助!还看到应将componentDidUpdate用作componentWillReceiveProps,但现在我会采取任何措施。

编辑

componentWillReceiveProps(nextProps) {
    whenGapiReady(() => {
        const { Id } = this.props;
        if(nextProps.Id === this.props.Id) {    
            this.props.fetchFileUploads(this.props.Id)
        }

    });
}

以上内容仍然循环不断……?

2 个答案:

答案 0 :(得分:0)

您需要在重构代码中正确拼写Receive

componentWillReceiveProps(nextProps){
//              ^^
    if(nextProps.Id !== this.props.Id)
    dispatch(this.props.fetchPlayerFileUploads(Id))
}

答案 1 :(得分:0)

#include <iostream>
`#include <opencv2/opencv.hpp>

using namespace cv;
using namespace std;

int main(){ 
Mat bgr=imread("image.png",1);
namedWindow("image",CV_WINDOW_FREERATIO);
imshow("image",bgr);
waitKey(0);

Mat hsv;
cvtColor(bgr,hsv,COLOR_BGR2HSV);


Mat mask1;
Mat mask2;
inRange(hsv,Scalar(0,100,100), Scalar(1,255,255), mask1);
inRange(hsv,Scalar(176,100,100), Scalar(179,255,255), mask2);

Mat mask =mask1 | mask2;
namedWindow("Output",CV_WINDOW_FREERATIO);
imshow("Output",mask);
waitKey(0);

Scalar mean (InputArray bgr, InputArray mask);
{

cout << "Mask= " << mean << endl;
}

if(nextProps.Id === this.props.Id) { this.props.fetchFileUploads(this.props.Id) } 每次都会被调用,并且componentWillReceiveProps始终等于nextProps.Id,因此无限循环,您可以存储ID来声明状态并从那里改进比较。 / p>