为什么 this.props.dispatch 根据父组件选择性地给出错误?
Why this.props.dispatch gives error selectively error depending of the parent component?
尝试在 React-Redux 中构建简单的登录和注销功能。
我试图在按钮组件内的函数中添加所有注销过程。
我有一个名为 LogoutButton 的简单组件,它应该发送新操作并从保持状态的 redux 存储中删除登录信息。
import React, { Component } from "react";
import { update_user_id, update_user_email } from "../../actions";
import { connect } from "react-redux";
export class LogoutButton extends Component {
render() {
return (
<div>
<button
onClick={() => {
localStorage.removeItem("jwtToken");
this.props.dispatch(update_user_id(""));
this.props.dispatch(update_user_email(""));
}}
>
Logout
</button>
</div>
);
}
}
export default connect()(LogoutButton);
当我将 LougoutButton 插入另一个基于 class 的组件 (UserInfo.js) -component 时,这会起作用。
但是,当我在 NavBar(基于函数的组件)中添加相同的组件时,我收到以下错误消息。
TypeError: _this.props.dispatch is not a function
onClick
C:/koodi/off_front/src/components/views/LogoutButton.js:12
9 | <button
10 | onClick={() => {
11 | localStorage.removeItem("jwtToken");
> 12 | this.props.dispatch(update_user_id(""));
| ^ 13 | this.props.dispatch(update_user_email(""));
14 | }}
15 | >
View compiled
▶ 20 stack frames were collapsed.
我假设原因是如何定义安装 LogoutButton 的组件。试图 google 信息但没有找到。
我对出错的原因很感兴趣。不仅是关于这个特殊情况的修复,还有更一般的修复。
我认为问题是因为您对同一个组件使用了 2 个导出。
几乎只有默认导出连接到商店,也许您使用命名导出导入了导航栏。
尝试在 React-Redux 中构建简单的登录和注销功能。
我试图在按钮组件内的函数中添加所有注销过程。
我有一个名为 LogoutButton 的简单组件,它应该发送新操作并从保持状态的 redux 存储中删除登录信息。
import React, { Component } from "react";
import { update_user_id, update_user_email } from "../../actions";
import { connect } from "react-redux";
export class LogoutButton extends Component {
render() {
return (
<div>
<button
onClick={() => {
localStorage.removeItem("jwtToken");
this.props.dispatch(update_user_id(""));
this.props.dispatch(update_user_email(""));
}}
>
Logout
</button>
</div>
);
}
}
export default connect()(LogoutButton);
当我将 LougoutButton 插入另一个基于 class 的组件 (UserInfo.js) -component 时,这会起作用。
但是,当我在 NavBar(基于函数的组件)中添加相同的组件时,我收到以下错误消息。
TypeError: _this.props.dispatch is not a function
onClick
C:/koodi/off_front/src/components/views/LogoutButton.js:12
9 | <button
10 | onClick={() => {
11 | localStorage.removeItem("jwtToken");
> 12 | this.props.dispatch(update_user_id(""));
| ^ 13 | this.props.dispatch(update_user_email(""));
14 | }}
15 | >
View compiled
▶ 20 stack frames were collapsed.
我假设原因是如何定义安装 LogoutButton 的组件。试图 google 信息但没有找到。
我对出错的原因很感兴趣。不仅是关于这个特殊情况的修复,还有更一般的修复。
我认为问题是因为您对同一个组件使用了 2 个导出。
几乎只有默认导出连接到商店,也许您使用命名导出导入了导航栏。