Javascript 如何分解对象以从方法检索返回值?

Javascript 如何分解对象以从方法检索返回值?,javascript,ecmascript-6,redux,immutability,destructuring,Javascript,Ecmascript 6,Redux,Immutability,Destructuring,我在使用不变性和redux,我面临的问题并不严重,但如果有解决方案,那就太好了。答案可能很傻,但由于我是ES新手,我在想我们如何才能做到这一点 下面是我的减速机: import Immutable from 'immutable'; import { TODOYO } from '../constants/action-types'; const initialState = Immutable.Map({ message: null, }); export default functi

我在使用不变性和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;
  }
}
下面是组件中的MapStateTops函数:

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

  return {
    message,
  };
}
如何分解
状态
以检索消息

我是这样想的:

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

这是错误的。是否有方法检索消息?

如果您的状态键中没有
消息
,则可以使用语法执行此操作。如果消息确实作为属性存在于您的状态中,则默认值将被覆盖。所以要小心使用

function mapStateToProps({ todos, message = todos.get('message') }) {
  return {
    message,
  };
}
您还可以将
mapstatetops
缩短为箭头函数:

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

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

destructuring assignment语法是一个JavaScript表达式,它可以将数组对象中的数据提取到不同的变量中


很有趣。谢谢。这样做很好,比如
const{length,firstLetters:substring(0,5)}=string国际海事组织。