reactjs - Reactjs 通过 redux 从 store 中获取存储的值
问题描述
我想保存我通过 redux 输入和提交的值,并在另一个组件上获取值。在这种情况下我该怎么做?
另外,如果您解释它何时是对象或何时是数组,将不胜感激。谢谢!
// AddName.js
state = {
user: ''
}
handleChange = (e) => {
const name = e.target.name;
const value = e.target.value;
this.setState(
{ [name]: value }
);
}
handleSubmit = (e) => {
const userName = this.state.user;
const name = {
userName: userName
}
this.props.dispatch({
type: 'ADD_NAME'
userName
})
}
<form onSubmit={this.handleSubmit}>
<input
onChange={this.handleChange}
name="user"
value={this.state.user}
/>
</form>
export default connect()(AddName);
.
// addNameReducer.js
const addName = (state = {}, action) => {
switch(action.type) {
case 'ADD_NAME':
console.log("add_name");
return { userName: action.userName };
default:
return state;
}
}
export default addName;
.
//anotherComponent.js
<p> {I want the stored value here } </p>
export default anotherComponent;
解决方案
您需要使用包中的connect()
函数react-redux
将您的组件连接到 redux 商店。它接受mapStateToProps
函数作为第一个参数,用于将值从存储传递到您的组件:
const mapStateToProps = state => ({
userName = state.userName
});
connect(mapStateToProps)(AnotherComponent);
现在AnotherComponent
将userName
作为道具收到:
export default const AnotherComponent = props => <p>{props.userName}</p>
推荐阅读
- excel - 逐行读取csv流,为Excel Range创建数组
- c# - 无法跟踪在 CustomControl WPF 中的列表中添加/删除项目
- r - 使用for循环变量访问数组中的元素在R中产生NA
- firebase - 在 Angular 6 中修改其他用户
- typescript - npm 包的类在 typescript 和 transpiled 版本之间不兼容
- c# - 最大行列表视图 xamarin
- c# - AccessViolationException 将数组传递给本机函数
- java - 我应该使用什么端口号
- javascript - JS 中的这种语言结构是什么?
- html - 有没有办法清除/隐藏两个 td 表中的第一个 td,而无需访问第一个 td?