【发布时间】:2018-05-11 22:26:01
【问题描述】:
下午好,
我度过了非常艰难的一天,试图让这个非常简单的 redux 操作正常工作。我要做的就是将我的状态更改为当前正在查看的选项卡 - 就是这样!没有什么花哨。我将向您展示组件、动作创建器和减速器:
StudentDash.js:
import React from "react";
import {connect} from "react-redux";
import { chooseTab } from "../../actions/dashActions";
const StudentDash = React.createClass({
handleTabChange(button){
chooseTab(button);
},
render(){
return(
<div className="dashContainer">
<div className="nav">
<div id="userInfo">
Hello {this.props.user.username}
</div>
<div id="navButtons">
<button onClick={() => this.handleTabChange("profile")}>Profile</button>
<button onClick={() => this.handleTabChange("caleander")}>Caleander</button>
<button onClick={() => this.handleTabChange("ballots")}>Ballot Entry</button>
</div>
</div>
<div className="navFocus"></div>
</div>
)
}
});
const mapStateToProps = (state) => {
return{
user: state.user,
activeTab: state.activeTab
}
};
const mapDispatchToProps = {
chooseTab
};
export default connect(mapStateToProps, mapDispatchToProps)(StudentDash);
dashActions.js:
export function chooseTab(tab){
console.log(tab.toUpperCase());
return {
type: tab.toUpperCase()
}
}
dashReducer.js
export function activeTab(state={}, action){
switch(action.type){
case "PROFILE":
console.log("profile");
return state;
case "CALEANDER":
console.log("CALEANDER");
return state;
case "BALLOTS":
console.log("BALLOTS");
return state;
default:
return state;
}
};
我尝试将type 硬编码为action.type 侦听器之一,例如“BALLOTS”。在此之前,我已经使用 redux 成功实现了异步操作。我要疯了,试图让这个非常简单的选项卡选择动作正常工作,需要一双新的眼睛——因为我不知道为什么我的减速器不接受这个。
【问题讨论】:
-
你在哪里注册你的减速器?对我来说,您的注册和发送似乎都正常。
-
他们注册在一个组合减速器中 @Yo Wakita 帮我解决了。
标签: javascript reactjs redux