【发布时间】:2016-11-09 11:28:01
【问题描述】:
我想创建一个名为 createScreen 的工厂函数来减少 react-redux 所需的样板。
看起来像这样:
ParentScreenFactory.js
export default function createScreen(stateActions = []) {
class ParentScreen extends React.Component {
}
function mapStateToProps(state) {
return {
...state,
};
}
function mapDispatchToProps(dispatch) {
const creators = Map()
.merge(...stateActions)
.filter(value => typeof value === 'function')
.toObject();
return {
actions: bindActionCreators(creators, dispatch),
dispatch,
};
}
return connect(mapStateToProps, mapDispatchToProps)(ParentScreen);
}
Child.js
const ParentScreen = createScreen([
routingActions,
authActions,
]);
class Child extends ParentScreen {
constructor(props) { // <-- error on this line
super(props);
}
render() {
return (
<View/>
);
}
}
export default Child;
但由于某种原因,我得到了undefined is not an object (evaluating 'context.store')。
堆栈跟踪:
Connect(ParentScreen)
connect.js:129
就是这行代码_this.store = props.store || context.store;。
您在这里看到任何明显的错误吗?
除此之外,您对如何减少所有样板代码有更好的想法吗?
谢谢。
【问题讨论】:
-
您的标题与您的问题完全无关。你问了一个关于如何修复错误的问题,并在最后抛出“我怎样才能减少样板文件”。
标签: javascript reactjs react-native redux react-redux