Ich versuche, den aktuellen Pfad des Reagieren-Routers in einem Container zu erhalten, damit ich es an eine untergeordnete Komponente weitergeben kann, die den Sichtbarkeitsfilter ändert.Erhalten Reagieren Router-Pfad in Requisiten mit Redux OwnProps
Genauer gesagt, ich versuche, ein Navigationsmenü markieren Sie die derzeit aktive Seite.
Ich verwende react, redux, react-router und react-router-redux, damit ich vom Redux-Speicher auf den Router-Status zugreifen kann.
Aus der Dokumentation für react-router-redux, sagt es so etwas wie dies zu tun:
function mapStateToProps(state, ownProps) {
return {
id: ownProps.params.id,
filter: ownProps.location.query.filter
};
}
Hier ist meine Container-Komponente:
import React, { Component, PropTypes } from 'react'
import { connect } from 'react-redux'
import { Link } from 'react-router'
import {
Segment as UISegment,
} from 'semantic-ui-react'
import NavMenu from '../components/NavMenu'
class MenuBar extends Component {
static propTypes = {
path: PropTypes.string.isRequired
}
render() {
const { path, } = this.props
return (
<UISegment>
<NavMenu activePath={path} />
</UISegment>
)
}
}
const mapStateToProps = (state, ownProps) => {
return {
path: ownProps.route ? ownProps.route.path : "/"
}
}
export default connect(mapStateToProps)(MenuBar)
Innerhalb der NavMenu Komponente, eine Menükomponente semantisch-UI Vergleichen Sie activePath
mit einem eigenen Pfad und markieren Sie die aktive Schaltfläche.
Alles scheint in der Theorie zu funktionieren; Wenn ich auf die verschiedenen Teile des Menüs klicke, wird eine @@router/LOCATION_CHANGE
Aktion ausgegeben. In den Redux-Dev-Tools sehe ich, dass sich der Zustand ändert. mapStateToProps
wird jedoch nie aufgerufen, und diese Komponente wird nie erneut gerendert.
Irgendwelche Ideen? Ich dachte über die Verwendung der reaktiven Methoden wie shouldComponentUpdate
nach, aber es scheint, dass react nicht einmal merkt, dass sich der Zustand oder die Requisiten ändern.
Um einen Zustand in Redux zu ändern, müssen Sie es durch den Versand tun. –