我正在使用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;
这是错误的。有没有办法检索邮件?
答案 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