有更好的写法吗?就像 setState(ContentStore.getAll())
会做同样的事情吗?我认为这看起来不必要地困惑,无论如何简化代码以提高可读性将是伟大的!
class Element extends Component {
...
setContentState = () => {
const {
basename,
bookmark,
contents,
} = ContentStore.getAll();
this.setState({
basename,
bookmark,
contents,
});
...
}
}
最佳答案
有这么方便的功能:
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.log(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);
...
}
}
或者您可以使用 Lodash 中的选择功能或Underscore .
关于javascript - 对象属性的有效setState?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52249783/