0

我有 2 个组件,ReviewList并且Review. ReviewList有一个组件列表,Review每个组件Review都有一个属性review

我想在组件上做一些逻辑工作,所以我想创建一个增强器Review.enhancer.js)来完成这种类型的工作(我希望组件Review是一个虚拟组件)。

我正在使用react-redux并且Review.enhancer我正在使用 connect 方法来获取道具({review}),但我什么也没得到。我是 react 和 redux 的菜鸟。

4

1 回答 1

2

connect首先,如果您已经通过将数据作为道具传递给增强器来提供数据,则不一定需要该函数。在这种情况下,您还可以使用该recompose库将逻辑应用于数据。但是,在大多数情况下,您仍然需要调度操作,因此仍然需要connectfrom 函数react-redux

当 props 被传递给被connect函数包裹的组件时,它们不会被自动传递下去。为了使包装组件可以访问这些道具,您需要从mapStateToProps函数中的第二个参数映射它们。

Review.enhancer.js

const mapStateToProps =  (state, ownProps) => {
    return { 
        review: ownProps.review,
    };
};

export default connect(mapStateToProps, null)(Review);

现在只有 review 属性被传递给被包装的组件。但是,您应该尽量避免这样做,因为它将增强器耦合到容器组件。

请注意,如果您想将所有道具传递给包装的组件,您可以省略箭头函数中的括号并使用隐式返回。

于 2018-11-07T23:22:51.893 回答