javascript - Redux/React 的授权组件设置

标签 javascript reactjs react-redux redux-thunk

我的 React/Redux 授权设置遇到了严峻的挑战,我不知所措。当前错误是:

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="urawesome@example.com" ref='email'  />
   <input type="password" placeholder="Password" ref='password' />
 </Form>
  );
 }
}
export default AuthorizeLogin;

最佳答案

所有操作都应从容器中分派(dispatch)。在这种情况下,容器应该有调度。

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

onLogin 应通过 props 传递给下游组件:

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

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

关于javascript - Redux/React 的授权组件设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39136559/

相关文章:

Javascript - 如何按 3 种不同的属性类型对对象数组进行排序? (字符串、整数、 bool 值)

javascript - 如何将 <select> 字段添加到我的 plupload 表单中?

javascript - 下拉菜单打开时抑制 onClick 事件 react

node.js - npm 本地路径 - 是否可以从子文件夹导入?

javascript - 我应该根据调用还是根据 reducer 管理的状态来组织我的 react redux reducer 组合?

redux - 如何在Redux中为每个类别的延迟加载项构建状态

javascript - 仅以mp3格式创建HTML/Javascript音频播放器

javascript - 规范化数组方法和返回值

javascript - React Tutorial 历史 map (step, move)

reactjs - NextJS,在 getServerSideProps 中预加载 Redux 数据