我试图映射到道具的行动,但我得到一个错误:类型错误:_this2.props.updateUsername不是一个函数
如何成功地将redux操作映射到props并成功调用函数?我在任何其他stackoverflow问题/答案中都没有看到这个错误弹出,这是一个简单的错误吗?会不会是在. index或. app中对redux的设置错误?
我试过:-不使用默认导出导入-有不同格式的mapDispatchToProps(如不使用bindactioncreators) -修复打字错误
>
组件:
import { updateUsername } from "../../actions/user-actions";
import React, { Component } from "react";
import { InputText } from "primereact/inputtext";
import { Button } from "primereact/button";
import { Password } from "primereact/password";
import "./UserLogin.css";
import { connect } from "react-redux";
import { bindActionCreators } from 'redux'
export class UserLoginPage extends Component {
constructor(props) {
super(props);
this.state = { //used to be using states so ill leave these here for now
username: "",
password: "",
renderTryAgain: false
};
this.checkLoginDetails.bind(this.checkLoginDetails);
}
async checkLoginDetails() {
...
}
render() {
const usernameBox = (
<InputText
...
value={this.props.username}
onChange={e => this.props.updateUsername(e.target.value)}
/>
);
const passwordBox = (
<Password
...
/>
);
const loginButton = (
<Button
...
/>
);
return (
<header className="User-login">
<p>Dashboard User Login</p>
<div className="p-grid">
<div className="p-col">{usernameBox}</div>
<div className="p-col">{passwordBox}</div>
<div className="p-col">{loginButton}</div>
</div>
</header>
);
}
}
const mapStateToProps = state => ({
username: state.username
});
const mapDispatchToProps = dispatch => bindActionCreators(
{
updateUsername,
},
dispatch,
)
export default connect(
mapStateToProps,
mapDispatchToProps
)(UserLoginPage);
减速器:
import { UPDATE_USERNAME} from '../actions/user-actions'
export function passReducer(state = "", {type, payload}) {
switch (type) {
case true:
return payload
default:
return state
}
}
export function usernameReducer(state = '', {type, payload}) {
switch (type) {
case UPDATE_USERNAME:
return payload.username
default:
return state
}
}
export default { passReducer, usernameReducer };
>
行动:
export const UPDATE_USERNAME = 'username:updateUsername'
export function updateUsername(newUsername){
return {
type: UPDATE_USERNAME,
payload: {
username: newUsername
}
}
}
export default {UPDATE_USERNAME, updateUsername}
非常感谢。
不要使用mapDispatchToProps。相反,只需将所有想要映射的动作包装在一个对象中,并将它们作为第二个参数传递给connect helper方法。
像这样< code>connect(mapStateToProps,{ update username })(user log in page)
希望这有帮助!
你可以在更新你的构造函数后检查一次吗,如下所示?
constructor(props) {
super(props);
//...
}
我有以下两门课: : : 我希望进行流操作,以便: 将映射到中的 的和分别合并到和中,对于所有具有相同id的s 为此,我编写了以下一段代码: 它的工作和输出如下: 但我相信有一种更好的方式可以达到同样的效果。任何一个指针都很好。
我有两个需要映射的继承层次结构。一个层次结构是国内的,另一个是野生的。我有抽象的Domestic动物和具体的DomesticCat和DomesticDog扩展它。在第二个层次结构中,我有抽象的Wild动物和具体的WildCat和WildDog扩展它。我还有另外两个类,分别是WildAnimalFeeder具有Wild动物的成员对象和DomesticAnimalFeeder具有DomesticAni
我有一个JSP登录页面,可以调用login action类。我使用的是Struts注释,而不是到映射,一切正常。我随机尝试了一些新东西,所以我从action类和struts中删除了所有注释。xml还没有映射到我的
flatMap 遍历所有的元素,为每一个创建一个集合,最后把所有的集合放在一个集合中。 assertEquals(listOf(1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7), list.flatMap { listOf(it, it + 1) }) groupBy 返回一个根据给定函数分组后的map。 assertEquals(mapOf("odd" to listOf(
我正在尝试使用流将一个列表映射到另一个列表。 原始列表的某些元素无法映射。也就是说,映射函数可能无法找到合适的新值。 null 对更好的方法的建议?或者我应该把溪流全部挖开,用好的旧循环?
1)做这件事的正确方法是什么?我做错了什么? 2)流是线程安全的吗?我正在多线程环境中工作,所以我是否应该使用返回TRAAD安全集合的收集器?