Должен ли я игнорировать предупреждение «React Hook useEffect имеет отсутствующую зависимость»? Обычно, когда я получаю данные из API, это то, что я делаю:
const Component = () => {
const [data,setData] = useState([]);
const getData = () => {
//Getting data and set data code...
}
useEffect(()=>{
getData();
},[]);
}
, и недавно я пытаюсь использовать redux для того же (получение данных из API), и я получаю этот React Hook useEffect имеет отсутствующую зависимость 'предупреждение ...
действие:
import {GET_POSTS} from './types';
const getPosts = () => (dispatch) => {
const url = 'https://jsonplaceholder.typicode.com/posts';
fetch(url)
.then(res => res.json())
.then(data => {
dispatch({
type: GET_POSTS,
payload: data
});
});
}
export default getPosts;
редуктор:
import {GET_POSTS} from '../actions/types';
const initialState = {
posts: []
}
const postsReducer = (state = initialState, action) => {
switch(action.type){
case GET_POSTS:
return {
...state,
posts: action.payload
}
default:
return state;
}
}
export default postsReducer;
приложение. js:
import React, {useEffect} from 'react';
import {connect} from 'react-redux';
import Hello from './components/Hello';
import getPost from './actions/postsAction';
import './App.css';
const App = ({getPost, dispatch}) => {
useEffect(() => {
getPost();
},[]);
return (
<div className='App'>
<Hello/>
</div>
);
};
const mapdispatchtoprops = (dispatch) => ({
dispatch,
getPost: () => {
dispatch(getPost());
}
});
export default connect(null, mapdispatchtoprops)(App);
Есть ли способ решить эту проблему, я пытался поместить диспетчеризацию в массив useEffect, но предупреждение все еще отображается, например так:
useEffect(() => {
getPost();
},[dispatch]);
Это полное предупреждение: React Hook useEffect отсутствует зависимость: 'getPost'. Либо включите его, либо удалите массив зависимых реагирующих хуков / исчерпывающий-deps
Пытался удалить массив useEffect, но я получу бесконечное значение l oop, он просто будет получать данные из API ( Мне нужно только запустить его один раз).
Должен ли я игнорировать предупреждение? Если нет, то как лучше всего справиться с этой проблемой?
Я никогда не получал такого предупреждения раньше, когда оставлял массив useEffect пустым, но недавно получил его, почему?