我有2个组成部分,ReviewList
和Review
。 ReviewList
具有组件Review
的列表,并且每个组件Review
都有属性 review 。
我想在组件上做一些逻辑工作,所以我想创建一个 enhancer ( Review.enhancer.js )来完成这种工作(我想组件Review
为虚拟组件)。
我正在使用 react-redux ,在我的Review.enhancer
上,我正在使用connect方法来获取道具({review}),但我什么也没得到。我对React和Redux不感兴趣。
答案 0 :(得分:2)
首先,如果您已经通过将数据作为道具传递给增强程序来提供数据,则不一定需要connect
函数。在这种情况下,您还可以使用recompose
库将逻辑应用于数据。但是,在大多数情况下,您仍然需要调度操作,因此仍需要使用connect
中的react-redux
函数。
将道具传递到由connect
函数包装的组件时,它们不会自动向下传递。为了使这些道具可以被包装的组件访问,您需要从mapStateToProps
函数中的第二个参数映射它们。
Review.enhancer.js
const mapStateToProps = (state, ownProps) => {
return {
review: ownProps.review,
};
};
export default connect(mapStateToProps, null)(Review);
现在仅将审阅道具向下传递到包装的组件。但是,您应该尝试避免这样做,因为它将增强器耦合到容器组件。
请注意,如果要将所有道具传递给包装好的 组件,您可以省略箭头中的括号 函数并使用隐式返回。