javascript - 对象属性的有效setState?

标签 javascript reactjs ecmascript-6

有更好的写法吗?就像 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/

相关文章:

javascript - 从 forEach javascript 返回

reactjs - 在 react redux 中的全局状态更改后调度新 Action

javascript - Firebase自定义身份验证: Security of Firebase Secret in JavaScript

javascript - 请求谷歌电子表格时的简单 Json 格式

javascript - 将 react-cookie 与 react redux 集成

javascript - React 中的输入字段没有变化(受控输入)

javascript - JS减少问题

javascript - 检查是否已授予对 Web MIDI API 的访问权限?

javascript - 尝试通过 jQuery ajax 调用加载 Google 图表

javascript - Material UI 组件不返回 HTMLElement 引用