Топор ios, UseEffect, Redux - PullRequest
       101

Топор ios, UseEffect, Redux

1 голос
/ 20 июня 2020

Почему этот useEffect находится в бесконечном l oop

useEffect(() => {
    async function fetchApi() {
        let res = await Axios.get(props.url + '/articles')
        props.loadArticles(res.data)
    }

    fetchApi()
})

зная, что компонент полностью подключен к redux

const mapStateToProps = (state) => ({
    url: state.ApiReducer.url,
    articles: state.ApiStocksReducer.articles
})

const mapDispatchToProps = (dispatch) => ({
    loadArticles: (data) => dispatch(loadArticles(data)),
    updateSelectedArticle: (data) => dispatch(updateSelectedArticle(data)),
    updateGeneralArticle: (data) => dispatch(updateGeneralArticle(data))
})

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

1 Ответ

1 голос
/ 20 июня 2020

Условное срабатывание эффекта По умолчанию эффекты запускаются после каждого завершенного рендеринга. Таким образом, эффект всегда воссоздается при изменении одной из его зависимостей.

Однако в некоторых случаях это может быть излишним. Нам не нужно создавать новую подписку при каждом обновлении, только если свойство источника изменилось.

Чтобы реализовать это, передайте второй аргумент useEffect, который представляет собой массив значений, от которых зависит эффект.

https://reactjs.org/docs/hooks-reference.html#conditionally -эффект

useEffect(() => {
    async function fetchApi() {
        let res = await Axios.get(props.url + '/articles')
        props.loadArticles(res.data)
    }

    fetchApi()
}, []);
...