Есть ли лучший способ написать это? Хотел бы setState(ContentStore.getAll()) сделать то же самое? Я думаю, что это выглядит излишне беспорядочно, и в любом случае упростить код для удобства чтения было бы здорово!
class Element extends Component {
...
setContentState = () => {
const {
basename,
bookmark,
contents,
} = ContentStore.getAll();
this.setState({
basename,
bookmark,
contents,
});
...
}
}
Это частный случай этот вопрос и не относится к React или setState.
@CertainPerformance Нет, меня устраивает, что все установлено в состояние. Стоит ли мне просто использовать this.setState(ContentStore.getAll())?



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


Есть такая удобная функция:
const obj = {
basename: 1,
bookmark: 2,
contents: 3,
aaa: 4
}
const pick = (obj, keys) =>
Object.assign({}, ...keys.map(key => ({ [key]: obj[key] })))
const picked = pick(obj, ['basename', 'bookmark', 'contents'])
console.info(picked)Теперь вы можете:
const pick = (obj, keys) =>
Object.assign({}, ...keys.map(key => ({ [key]: obj[key] })))
class Element extends Component {
...
setContentState = () => {
const data = ContentStore.getAll();
const result = pick(data, ['basename', 'bookmark', 'contents'])
this.setState(result);
...
}
}
Или вы можете использовать функцию выбора из Лодаш или Подчеркивать.
Следует отметить, что существуют существующие функции pick, которые не нужно каждый раз писать с нуля или вставлять служебную функцию. В частности, Lodash / Underscore pick.
Возвращает ли
ContentStore.getAll()объект с любыми свойствами, которые вы не хотите отправить вsetState?