У меня есть эта функция
static getDerivedStateFromProps(nextProps, prevState) {
let { fetching } = nextProps
const { error } = nextProps
if (prevState.fetching !== fetching && !fetching) {
fetching = error
}
const userId =
Object.keys(nextProps.match.params).length > 0
? nextProps.match.params[Object.keys(nextProps.match.params)[0]]
: 'new'
if (userId !== 'new') {
const itemUser = nextProps.usersList.filter(item => {
if (String(item.userid) === userId)
return item
})
return { profileItem: { ...prevState.profileItem, ...itemUser[0] }, index: userId, fetching }
}
return { fetching }
}
Он работает и делает то, что должен делать, но я хочу избавиться от этого предупреждения:
Expected to return a value at the end of arrow function array-callback-return
Он говорит, что проблема на кону
const itemUser = nextProps.usersList.filter(item => {



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Поскольку обратный вызов фильтр ожидает, что вы вернете логическое значение, вы можете просто переписать эту строку так:
const itemUser = nextProps.usersList.filter(item => String(item.userid) === userId)
Проблема существует из-за этой функции:
item => {
if (String(item.userid) === userId)
return item
}
Если item.userid != userId, вы в настоящее время ничего не возвращаете, поэтому он неявно возвращает undefined. хорошая практика всегда возвращает что-то, даже если он равен нулю или false. В этом случае ваша функция работает должным образом, потому что обратный вызов фильтра ожидает логическое значение. Когда вы возвращаете элемент, он имеет номер правдивый, и поэтому фильтр включает этот элемент. Кроме того, если вы ничего не возвращаете, он неявно возвращает undefined, то есть ложь, и, таким образом, отфильтровывает элемент.
В конце концов, поскольку вы пытаетесь вернуть один элемент, вам следует использовать Идеально вместо .find(). Это предотвратит лишние итерации после того, как элемент будет найден, поскольку вы когда-либо ищете только один элемент:
const itemUser = nextProps.usersList.find(item => String(item.userid) === userId);
return { profileItem: { ...prevState.profileItem, ...itemUser }, index: userId, fetching }
вау, большое спасибо за ответ, это сработало, и я многому научился, спасибо за ваше время