如何解析对象以从方法中检索返回值?

时间:2016-12-08 13:04:31

标签: javascript ecmascript-6 redux immutability destructuring

我正在使用immutability和redux,我面临的问题不是很严重,但如果有解决方案,那就太棒了。答案可能很愚蠢,但由于我是ES的新手,我在想如何实现它。

以下是我的减速机:

import Immutable from 'immutable';
import { TODOYO } from '../constants/action-types';

const initialState = Immutable.Map({
  message: null,
});

export default function todos(state = initialState, action) {
  switch (action.type) {
    case TODOYO:
      return state.set('message', action.payload);
    default:
      return state;
  }
}

下面是我在组件中的mapStateToProps函数:

function mapStateToProps(state) {
  const message = state.todos.get('message');

  return {
    message,
  };
}

如何解构state以检索邮件?

我在想这样的事情:

const {
  todos: {
    message: get('message')
  }
} = state;

这是错误的。有没有办法检索邮件?

2 个答案:

答案 0 :(得分:2)

如果您没有message作为州的一个键,则可以使用default parameters语法执行此操作。如果消息确实作为您所在州的属性存在,则将覆盖默认值。所以要谨慎使用。

function mapStateToProps({ todos, message = todos.get('message') }) {
  return {
    message,
  };
}

您还可以将mapStateToProps缩短为箭头功能:

const mapStateToProps = ({ todos, message = todos.get('message') }) => ({
  message
});

答案 1 :(得分:2)

这是不可能的。您只能构造数组/对象,而不能在解构中执行函数。

  

解构赋值语法是一种JavaScript表达式,可以将数组对象中的数据提取到不同的变量中。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment