Ich verfolge das container/ui_component-Muster, um reduktive Dispatch-Aktionen an meine ui_component vom übergeordneten Container zu übergeben. Ich kann die Dispatch-Aktionen erfolgreich innerhalb der Render-Methode der ui_component aufrufen, zum Beispiel das unten beschriebene onClick-Ereignis funktioniert einwandfrei.Dispatch-Redux-Aktion von einem Fenster-Ereignis-Listener
Mein Problem ist, ich kann nicht die gleichen Aktionen von einem eventListener (handleResize) innerhalb der gleichen Komponente auslösen.
import React, { Component, PropTypes } from 'react';
import { Link } from 'react-router';
import classNames from 'classnames';
class Dashboard extends Component {
constructor(props) {
super(props);
this.props.updateDashVis.bind(this); // not sure if this is doing anything
}
static contextTypes = {
router: PropTypes.object
};
handleResize() {
this.props.updateDashVis('app-dash'); // returns undefined
}
componentDidMount() {
window.addEventListener('resize', this.handleResize);
}
componentWillUnmount() {
window.removeEventListener('resize', this.handleResize);
}
componentWillUnmount() {
this.props.resetMe();
}
render() {
return (
// ...
<div className="top-bar">
<div className="burger" onClick={()=> {this.props.updateDashVis(this.props.appDashVis)}} ><i className="fa fa-bars" aria-hidden="true"></i></div>
{/* onClick works fine and action is fired */}
</div>
// ...
);
}
}
export default Dashboard
Dies ist meine erste React/Redux/ES6-Projekt, so könnte dies etwas einfaches sein. Jede Anleitung wäre willkommen.
wollte sagen, "Fenster Ereignis-Listener", nicht Witwe. Da ist ein Witz irgendwo drin ... –
Ich habe es herausgefunden. Ich habe eine neue Aktion erstellt, die kein Argument benötigt, und sie dann einfach an den Ereignishandler gebunden: componentDidMount() { window.addEventListener ('resize', this.props.hideDash); } componentWillUnmount() { window.removeEventListener ('resize', this.props.hideDash); } –
Überlegen Sie, Ihre eigene Frage zu beantworten und sie als beantwortet zu markieren. So können andere von Ihrer Lösung profitieren! –