亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

當我將動作傳遞給 mapDispatchToProps 時,為什么 this.props 未定義?

當我將動作傳遞給 mapDispatchToProps 時,為什么 this.props 未定義?

至尊寶的傳說 2023-02-17 15:58:16
在 LoginForm 中,this.props盡管我在 mapDispatchToProps 中傳遞了操作,但仍未定義。我在函數中設置了斷點connect,并且該操作正在將其放入 connect 函數中,但無論出于何種原因,在該handleSubmit函數中,this.props 是未定義的。我很難過。我有一個單獨的“注冊”流程,它與我下面的基本相同,并且運行良好。我基本上復制粘貼了注冊代碼,并將所有內容重命名為“登錄”,并稍微修改了一些內容,無論出于何種原因this.props 未定義,即使我傳遞給 mapDispatchToProps 的內容似乎是正確的。組件:import React from 'react';import { connect } from 'react-redux';import { loginSubmit, loginUpdateField } from '../../redux/actions/login.actions';import { TextInput } from '../../stories/TextInput';import { Button } from '../../stories/Button';export class LoginForm extends React.Component {  // eslint-disable-next-line  constructor(props) {    super(props);  }  handleSubmit(event) {    event.preventDefault();    console.log('Props: ', this.props); // UNDEFINED!!!!!!  }  handleUpdateField(field, value) {    // this.props.updateField(field, value);  }  render() {    return (      <form style={{ 'WebkitPerspective': '1000' }}>        <TextInput label="Username" id="username" /> <br />        <TextInput label="Password" id="password" type="password" /> <br /><br />        <Button disabled={false} primary size="medium" onClick={this.handleSubmit.bind(this)} label="Ready for Takeoff" />        <Button disabled={false} size="medium" onClick={() => alert} label="Cancel" />      </form>    );  }}export default connect(  null,  { loginSubmit, loginUpdateField })(LoginForm);那個行動:export const loginSubmit = (fieldValues) => {  return dispatch => {    dispatch(loginSubmitBegin);    let errors = isFormValid(fieldValues);    if (!errors.formValid) {      dispatch(loginErrors(errors));    } else {      axios        .post(`https://api.mydomain.io/login`, fieldValues, { headers: { "Access-Control-Allow-Origin": "*", } })        .then(res => {          dispatch(loginSuccess({ username: 'testuser' }));        })        .catch(err => {          handleErr(err.response.data.error);        });    }  }};
查看完整描述

1 回答

?
白豬掌柜的

TA貢獻1893條經驗 獲得超10個贊

如果您從此組件導入命名導出,那么您將導入未連接的組件:

import { LoginForm } from "./LoginForm";

由于 redux-connected 組件是默認導出,如果您希望它成為 redux-connected 版本,則必須確保導入默認導出。

import LoginForm from "./LoginForm";

將來避免此錯誤的一種方法是甚至不導出未連接的LoginForm組件。換句話說,您可以將類聲明為class LoginForm extends React.Component { ... }而不是export class LoginForm extends React.Component { ... }.


查看完整回答
反對 回復 2023-02-17
  • 1 回答
  • 0 關注
  • 114 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號