reactjs - 尝试将 redux 操作作为道具传递给子组件
问题描述
我有一个父组件“Header”,其中包含一个子组件“LogoutButton”,
代码: 标题:
import LogoutButton from "./HeaderComps/LogoutButton";
import { setIsLoggedIn } from "../redux/action";
import { connect } from "react-redux";
class Header extends Component {
handleLogOut() {
const { setIsLoggedIn } = this.props;
setIsLoggedIn(x,y,z)
}
render() {
return (
<LogoutButton click={this.handleLogOut}/>
);
}
}
export default connect(
state => ({
isLoggedIn: state.isLoggedIn,
isAdmin: state.isAdmin,
userName: state.userName
}),
{ setIsLoggedIn }
)(Header);
注销按钮:
import React, { Component } from "react";
import { Redirect } from "react-router-dom";
import { setIsLoggedIn } from "../../redux/action";
import { connect } from "react-redux";
function LogoutButton(props) {
return (
<button
type="button"
className="btn btn-warning"
id="LogoutButton"
onClick={props.click}
>
Log out
</button>
);
}
export default connect(
state => ({
isLoggedIn: state.isLoggedIn,
isAdmin: state.isAdmin,
userName: state.userName
}),
{ setIsLoggedIn }
)(LogoutButton);
如您所见, setIsLoggedIn()是来自 redux 的一个动作,它有效。我想要做的是在点击LogoutButton时让它工作。我试图将它作为道具传递,但它没有任何影响......有没有办法将 redux 动作作为道具传递?
解决方案
我可以看到几个问题:
- 您的操作 setIsLoggedIn 和回调道具具有相同的名称。
- 您需要使用箭头函数来访问 this,其他选项是在构造函数上绑定 this 上下文
- 你不需要连接你的 Header 组件
import LogoutButton from "./HeaderComps/LogoutButton";
class Header extends Component {
render() {
return (
<LogoutButton />
);
}
}
import React, { Component } from "react";
import { Redirect } from "react-router-dom";
import { setIsLoggedIn as setIsLoggedInAction } from "../../redux/action";
import { connect } from "react-redux";
function LogoutButton(props) {
return (
<button
type="button"
className="btn btn-warning"
id="LogoutButton"
onClick={props.setIsLoggedIn}
>
Log out
</button>
);
}
export default connect(
state => ({
isLoggedIn: state.isLoggedIn,
isAdmin: state.isAdmin,
userName: state.userName
}),
{ setIsLoggedIn: setIsLoggedInAction }
)(LogoutButton);
推荐阅读
- r - 将字符转换为因子 R
- python - 将熊猫数据框行转换为列表
- assembly - 微处理器:我有一个问题,我不知道下一步该做什么。
- javascript - 如何在 Next.js 中删除默认加载指示器
- javascript - 如何在 vue 3 中获取 API 响应到我的列表渲染中?
- bash - 我正在尝试提出一个 shell 脚本来重命名文件并在每次文件名更改时运行命令
- oracle - 当我调用触发器更新 STUDENT 表中的总数时,Oracle 中的 SQL 出错
- discord - 重定向到频道以及 ping 角色,然后使用 args 发布消息
- oracle - 何时在物化视图中添加一系列字段
- r - 如何在 R 中的分组条形图上创建误差线?