使用Hook和redux-saga反应js重复渲染组件

时间:2020-06-14 11:45:22

标签: reactjs redux react-hooks redux-saga

我正在尝试使用redux-saga获取数据。结果,它每隔2或3秒钟重复渲染一次我的组件。 这是我的组件:

const Farms = props => {

    useEffect(() => {
        props.listFarms();
    }, []);

    console.log(" [ FARMS ] let see that works :", props.farms);

    return (
        <div> </div>
    );
};

const mapStateToProps = state => {
    return {
        farms: state.farms
    }
};

const mapDispatchToProps ={ listFarms }

export default connect(mapStateToProps, mapDispatchToProps)(Farms);

这是我的传奇发生器:

function* getAllFarms () {
    try {
        console.log(' [ farms saga ] all farms');
        const allFarms = yield call(getFarmsAsync);

        yield put(listFarms(allFarms.data))
    } catch (error) {
        console.log(' [ farms saga ] ERROR');
    }
}

这是我的控制台输出:(它不会停止)

enter image description here

有人知道我的错误在哪里吗?

1 个答案:

答案 0 :(得分:0)

从代码和控制台输出中可以明显看出,您一次又一次使用getAllFarms调用yield put(listFarms(allFarms.data)) worker saga。

换句话说,getAllFarms工作者的传奇正在听listFarms产生的动作,因此它是递归执行的。