Ich baue eine Redux basiertes Modell/Dialog-Trigger basierend auf Dan Abramov Lösung auf diese Frage: Dan Abramov's solutionReact-Redux Container-Würfe "mapStateToProps() in Connect (ModalRoot) muss ein einfaches Objekt zurückgeben. Stattdessen empfangen undefined."
Der Fehler, den ich bekommen habe ist „mapStateToProps() in Connect (ModalRoot) muss ein einfaches Objekt zurückgeben Stattdessen erhielt undefiniert. . "
Hier ist der Code für den Modal-Container und dem Code, den es nennt:
// Code that calls the Modal Container
import React from 'react';
import { Provider } from 'react-redux';
import { Connector as HorizonConnector } from 'horizon-react';
import getMuiTheme from 'material-ui/styles/getMuiTheme';
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';
import routes from '../routes';
import store from '../store';
import horizon from '../db';
import ModalRoot from './Modal';
export default() => (
<MuiThemeProvider muiTheme={getMuiTheme()}>
<HorizonConnector horizon={horizon} store={store}>
<div className="app">
{routes}
<ModalRoot />
</div>
</HorizonConnector>
</MuiThemeProvider>
);
// The Modal Container
import LoginModal from '../components/Modals/LoginModal'
import {connect} from 'react-redux'
const MODAL_COMPONENTS = {
'LOGIN_MODAL': LoginModal
/* other modals */
}
const ModalRoot = ({ modalType, modalProps }) => {
if (!modalType) {
return <span /> // after React v15 you can return null here
}
const SpecificModal = MODAL_COMPONENTS[modalType]
return <SpecificModal {...modalProps} />
}
export default connect(
state => state.modal
)(ModalRoot)
Es ist wahrscheinlich etwas einfach, ich bin zu vergessen, aber seine mich verrückt, Kommentare oder Vorschläge sind willkommen.
Haben Sie überprüft, dass die state.modal tatsächlich existiert? Verwenden von Redux-Dev-Tools? – ctrlplusb
Danke für die Antwort. Eigentlich nicht. Nicht wirklich sicher, was ich tun soll, um es zu erstellen. Vermisse ich einen Schritt? –
Wenn Sie noch einmal Dan's Antwort durchgehen, werden Sie sehen, dass Sie einen 'modalReducer' erstellen müssen und dann Aktionen ausgelöst haben, die vom Reducer verbraucht werden. Wenn du mit Redux nicht vertraut bist, gib Dans Unterrichtsstunden an: https://egghead.io/series/getting-started-with-redux – ctrlplusb