【发布时间】:2020-10-27 10:38:45
【问题描述】:
这是一个反应形式
const mapStateToProps = state => {
return {
number:state.number,
id: state.id
}
}
const mapDispatchToProps = (dispatch) => {
return {
submitInput: (event) => {
dispatch(handleChanger(event))
}
}
};
class Id extends React.Component {
constructor(){
super ();
this.state = {
NUMBER:'',
ID:''
}
this.handleChange = this.handleChange.bind(this);
}
handleChange(events) {
this.setState({
[events.target.name]:events.target.value
});
}
render(){
return (
<div className="bodywrapper">
<div className="projectcontainer">
<div className="textcontainer">
<div className="textheader">Files required</div>
</div>
<div className="bodycontainer">
<div className="fileinput">
<input className="idforminput"
placeholder="Project name"
type="text"
onChange = {this.handleChange}
value = {this.state.ID}
name = "ID"
/></div>
<div className="idtextcontainer">
<div className="filetext fileinput">Number of slides required</div>
<div className="fileinput">
<input className="idformnumberinput"
placeholder="10"
type="number"
onChange = {this.handleChange}
onChange = {this.props.submitInput(this.state.ID)}
name = "NUMBER"
value={this.state.NUMBER}/>
</div>
</div>
{this.props.ID}
</div>
<div className="buttoncontainer">
<button className="bottontext"
onClick ={this.props.submitInput(this.state.ID) }>
<a href="link.html">Next step</a>
</button>
</div>
</div>
</div>
)
}
}
export default connect(mapStateToProps,mapDispatchToProps)(Id)
handlechage 将输入值添加到状态。
我需要全局的状态,所以使用了 redux。 MDTP 使用 handleChanger 动作将值添加到 reducer:
export const handleChanger = (event) => ({
type:event.target.name,
event:event
})
所以类型变成了ID它会在reducer的状态中添加相应的值:
export const handleChanger = (state = initialState,action) => {
switch (action.type) {
case NUMBER:
return{
...state,
number: action.event
}
case ID:
return {
...state,
id: action.event
}
default: return state
}
}
那么为什么这段代码不起作用? 或者你能建议任何其他方法来向 redux 状态添加输入吗?
【问题讨论】: