useEffect React Hook вызывает несколько раз при изменении компонента - PullRequest
1 голос
/ 21 февраля 2020

Моя функция делает 10 асинхронных c обращений к бэкэнду после изменения filterState. Я хочу, чтобы он вызывался один раз за изменение.

 useEffect(() => {
    const getQuery = async () => {
      let query = filterActions.getQueryString()
      taskService.get(query).then(res => {
        console.log('tasks res', res)
        setQueriedTasks(res)
      })
    }

    getQuery()
  }, [filterState])

Как обновить фильтр

  const updateFilter = (updates) => {
    dispatch({type: 'SET_FILTER', payload: updates})
  }

Мой редуктор для обновления состояния

function reducer(state, action) {
  switch (action.type) {
  case 'SET_FILTER':
    return Object.assign({...state}, action.payload)
  }
}
...