как использовать диспетчерскую функцию ловушки useContext внутри топора ios (). then ()? - PullRequest
0 голосов
/ 04 февраля 2020

в моем компоненте

axios({
    method: 'get',
    url: `${SERVER_URL}crawler/get-customer/${uniqueId}`,
}).then(function (response) {
    if(response.data){
        console.log("response",response);
        responseData = response.data;
     dispatch({ type: 'SET_IMG', payload: { url: responseData.logo_url } });
    }
},[]);

ответ приходит, как и должно, но отправка идет рекурсивно и почти сломала мой браузер, а URL-адрес данных не обновляется

Ответы [ 2 ]

0 голосов
/ 04 февраля 2020
useEffect(() => {
    axios({
        method: 'get',
        url: `${SERVER_URL}crawler/get-customer/${uniqueId}`,
    }).then(function (response) {
        if(response.data){
           console.log("response",response);
           responseData = response.data;
           props.functionName(response.data);
      }
},[]);

const mapDispatchToProps = dispatch => {
return {
functionName: (data) => dispatch({
        type:'SET_IMG',
        payload: { url: responseData.logo_url }
    })
 }
}

export default connect(, mapDispatchToProps)(nameComponent);
0 голосов
/ 04 февраля 2020

Было бы полезно, если бы вы могли опубликовать весь свой компонент, но я все равно сделаю удар ...

Я предполагаю, что ваш компонент также выводит значение извлеченных данных из состояния (redux ?), а затем, скорее всего, происходит этот тип циклов:

  • рендеринг компонента
  • выборка данных
  • обновление значения в состоянии (избыточность?)
  • компонент рендерится, потому что значение было обновлено
  • извлекает данные
  • обновляет значение в состоянии
  • et c

Вы намереваетесь только получить данные один раз? Если вы делаете что-то вроде этого:

useEffect(() => {
  axios({...}).then(...);
}, []);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...