使用钩子和redux-saga反复执行js来重新渲染组件

问题描述 投票:0回答:1

我正在尝试使用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

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

reactjs redux react-hooks redux-saga
1个回答
0
投票

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

换句话说,getAllFarms worker saga正在侦听listFarms产生的动作,因此它是递归执行的。

© www.soinside.com 2019 - 2024. All rights reserved.