【问题标题】:deciphering a export default connect statement in a react component破译反应组件中的导出默认连接语句
【发布时间】:2018-07-11 14:36:24
【问题描述】:

我正在尝试找出一个使用 React、Redux 和 Redux-Saga 的内部 Web 项目。

有一个 React 组件似乎比项目的其他部分复杂得多,我就是不知道到底发生了什么。

我在尝试破译代码块底部的 export default connect 语句 中发生的事情时失败了。

具体来说,我看到这两个对象/事物作为道具传递给 VehicleFuelType 组件:

  • onReaction
  • onConfigurePropulsion
  • 燃料类型

但是我看不到在export default connect 语句中这些对象发生了什么。

我已经阅读了一堆 redux 文档,但对我来说仍然是个谜。

如果有人知道这个代码块中实际发生了什么,请您分享一下知识吗?

谢谢!

class vehicleDisplay extends React.Component {

componentDidMount() {
    this.props.onConfigurePropulsion();
}

render() {

    return (
       <div>
           {fuelType.valueSeq().map(f =>
             <div>    
               <VehiclefuelType
                   key={f.id}
                   fuelType={f}
                   reaction={reactions.find(r => r.fuelTypeId === f.id)}
                   onReaction={!fatalReaction ? () => onReaction(f.id) : () => null}
               />
            </div>
      </div>
    )
}

export default connect(
    (state, { propulsionId, currentVehicleId }) => ({
        propulsion: state.propulsions.get(propulsionId),
        fuelTypes: state.fuelTypes.filter(f => f.propulsionId === propulsionId),
        reactions: state.reactions.filter(r => r.propulsionId === propulsionId),
    }),
    (dispatch, { propulsionId }) => ({
        onConfigurePropulsion: () => dispatch(Actions.configurePropulsion(propulsionId)),
        onReaction: (fuelTypeId) => dispatch(Actions.saveReaction(propulsionId, alternativeId))
    })
)(vehicleDisplay)

【问题讨论】:

    标签: reactjs ecmascript-6 redux react-redux redux-saga


    【解决方案1】:

    connect 接受两个参数,mapStateToPropsmapDispatchToProps。这些通常被分离成它们自己的变量,但是这个人是内联的。这里的第一个参数是从状态中检索值并将它们放入组件的props。第二个是为 redux 操作设置调度,然后也可以通过props 访问。更多信息可以在here找到。

    【讨论】:

    • 哦,好吧,为了使其更具可读性,我可以分配这两个参数,例如: mapStateToProps = (stuff) 和 mapDispatchToProps = (stuff) 然后只需“导出默认连接(mapStateToProps,mapDispatchToProps),正确吗?谢谢
    • 是的!只需将这些函数复制到它们自己的变量中,您就应该是可靠的。
    猜你喜欢
    • 2019-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-22
    • 2014-11-26
    • 1970-01-01
    • 2020-12-14
    相关资源
    最近更新 更多