Где я должен выполнять вызовы AJAX и API в React.js функциональные компоненты?

#javascript #reactjs #asynchronous #async-await #jsx

#javascript #ajax #reactjs

Вопрос:

Я узнал больше о React.js функциональные компоненты и начали перевод одного из моих React.js приложения, чтобы использовать их вместо стандартных компонентов react. В моих компонентах react я выполнял вызовы AJAX / API в componentDidMount() функции. Поскольку эта функция не существует в функциональных компонентах, я не уверен, куда их поместить.

Я не смог найти ответ на React.js сайт, единственная страница, которую я смог найти в AJAX и API, показывает выполнение этих вызовов с использованием стандартных компонентов react в componentDidMount() функции.

Комментарии:

1. Найдите функцию useEffect()

Ответ №1:

Это то, что дает нам React hooks — способы создания побочных эффектов в функциональных компонентах:

https://reactjs.org/docs/hooks-effect.html

со страницы документа:

Если вы знакомы с методами жизненного цикла класса React, вы можете представить себе useEffect Hook как componentDidMount, componentDidUpdate и componentWillUnmount вместе взятые.

например:

 import React, { useState, useEffect } from 'react';

function Example() {
  const [count, setCount] = useState(0);

  // Similar to componentDidMount and componentDidUpdate:
  useEffect(() => {
    //do an ajax call here
  });

  return (
    <div>
      <p>You clicked {count} times</p>
      <button onClick={() => setCount(count   1)}>
        Click me
      </button>
    </div>
  );
}
  

Ответ №2:

Вы можете использовать react-pure-lifecycle для добавления функций жизненного цикла к функциональным компонентам.

Пример:

 import React, { Component } from 'react';
import lifecycle from 'react-pure-lifecycle';

const methods = {
    componentDidMount(props) {
    //ajax call here
    }
};

const Channels = props => (
      <h1>Hello</h1>
  )

export default lifecycle(methods)(Channels);