У меня есть useEffect
, который вызывает action
из redux
для выборки закачек
useEffect(() => {
getUploads()
}, [getUploads])
Однако я хочу получать только при изменении состояния, а не при каждом отображении компонента. Я сопоставил состояние как:
{filteredUploads.map((image, i) => { return (...) })}
Я попытался добавить getUploads
, filteredUploads
, filteredUploads.length
в качестве массива зависимостей. Ничего из этого не сработало.
Мой redux-action
:
export const getUploads = () => async dispatch => {
try {
dispatch({ type: 'LOADING', payload: true })
const res = await axios.get('/uploads/myuploads')
dispatch({
type: GETMYUPLOAD_SUCCESS,
payload: res.data
})
} catch (err) {
const error = err.response.data.error[0].msg
dispatch(setAlert(error, 'danger'))
}
}
mapStatetoProps
:
function mapStateToProps(state) {
const { myuploads, searchField } = state.useruploads;
return {
searchField: state.useruploads.searchField,
filteredUploads: myuploads.filter((upload) => upload.caption.toLowerCase().includes(searchField.toLowerCase()))
};
}