2016-08-25 3 views
0

имеет серьезный вызов с моей настройкой авторизации React/Redux, и я в недоумении. Текущая ошибка:Параметры авторизации Настройка для Redux/React

HomeHeader.js 8595: 26 Uncaught ReferenceError: рассылка не определен

Там очень много здесь не так, и любая помощь будет оценена.

Я создаю два компонента авторизации: один для регистрации и один для входа в систему. Компонент AuthorizationLogin - это то, над чем я работаю в первую очередь.

Я не знаю, как получить это, чтобы передать информацию о событии, которую он захватывает, формируя поля формы, помещая переменные creds, а затем через компонент HomeHeader, а затем снова в контейнер HomePage. Включить ли все компоненты авторизации в один огромный компонент HomeHeader?

Вот основной код и поток. По какой-то причине код не загружается прямо в StackOverflow.

Flow

HomePage.js 
import React from 'react'; 
import {connect} from 'react-redux'; 
import * as actions from '../../../actions/homeEventFormActions'; 
import HomeHeader from '../homeHeader/HomeHeader'; 
import HomeEventForm from '../homeEventForm/HomeEventForm'; 
class HomePage extends React.Component { 
constructor(props) { 
    super(props); 
} 
render() { 
    const { dispatch } = this.props; 
    return (
    <div> 
    < HomeHeader /> 
    < HomeEventForm 
     onSubmit={this.props.onSubmit} 
    /> 
    </div> 
); 
} 
} 

function mapStateToProps(state) { 
return { 
    homeEventForm: state.homeEventForm 
}; 
} 

function mapDispatchToProps(dispatch) { 
return { 
    onSubmit: (eventName) => dispatch(actions.createEventButton(eventName)), 
}; 
} 

export default connect(
mapStateToProps, 
mapDispatchToProps 
)(HomePage); 





HomeHeader.js 
import React, { Component, PropTypes } from 'react'; 
import AuthorizeLogin from '../../Authorization/AuthorizeLogin'; 
import AuthorizeRegister from '../../Authorization/AuthorizeRegister'; 
import { loginUser } from '../../../actions/authorizationActions'; 
class HomeHeader extends React.Component { 
    constructor() { 
     super(); 
    } 
    _handleChange(eventKey) {
 
    ... 
    <AuthorizeLogin 
     onLoginClick={ (creds) => dispatch(loginUser(creds))} 
    /> 
    ... 
    } 
    return; 
    } 
    render() { 

     const { dispatch } = this.props; 

     return (
     ... 
      <Modal.Header closeButton onClick={()=> this._handleChange(5)}> 
     ...  
    ); 
    } 
    } 
    export default HomeHeader; 



AuthorizeLogin.js 

import React from 'react'; 


class AuthorizeLogin extends React.Component { 

constructor(props, context) { 
    super(props, context); 
    this.state = {}; 
    this._login = this._login.bind(this); 
} 
_login(e) { 
    e.preventDefault; 
    const email = this.refs.email; 
    const password = this.refs.password; 
    const creds = { email: email.value.trim(), password: password.value.trim() }; 
    this.props.onLoginClick(creds); 
} 
render() { 
return (
<Form horizontal onSubmit={this._login}> 
    <h4 className="authEmailText">Login with your email</h4> 
    <input type="email" placeholder="[email protected]" ref='email' /> 
    <input type="password" placeholder="Password" ref='password' /> 
</Form> 
); 
} 
} 
export default AuthorizeLogin; 

ответ

1

Все действия должны быть отправлены из контейнера. В этом случае контейнер должен иметь отправку.

function mapDispatchToProps(dispatch) { 
return { 
    onSubmit: (eventName) => dispatch(actions.createEventButton(eventName)), 
    onLogin: (creds) => dispatch(loginUser(creds)), 
}; 
} 

OnLogin должны быть переданы вниз по течению компонентов с помощью реквизита:

<HomeHeader onLogin={this.props.onLogin} /> 

<AuthorizeLogin 
    onLoginClick={this.props.onLogin} 
/> 
+0

Спасибо! Это был OnLogin, проходящий вниз по течению, что давало мне проблемы. Создание onLogin в качестве обратного вызова помогло мне понять намного лучше. –