我创建了一个创建动态组件的函数。基本上它接收一个现有的组件并在componentDidMount中执行一些操作。
import React from "react"
import { connect } from "react-redux"
import { getLeaveMessageById, deleteLeaveMessage } from "actions/leaveMessages"
import { withRouter } from "react-router"
export const withLeaveMessage = (leaveMessageId, Component) => {
const Container = React.createClass({
componentDidMount: function() {
this.props.router.setRouteLeaveHook(
this.props.route,
this.routerWillLeave
)
},
componentWillUnmount: function() {
this.props.deleteLeaveMessage("proposalForm")
},
routerWillLeave: function(){
return this.props.leaveMessage
},
render: function() {
return <Component/>
}
})
const mapStateToProps = state => {
return {
leaveMessage: getLeaveMessageById(leaveMessageId, state)
}
}
const mapDispatchToProps = dispatch => {
return { deleteLeaveMessage }
}
return withRouter(connect(mapStateToProps, mapDispatchToProps)(Container))
}
&#13;
那么,什么是更好的地方呢?防爆。组件,容器,工具等