我正在开发一个react.js应用程序,其中我正在使用redux状态管理。我创建了两个单选按钮,并在它们之间切换,并相应地设置状态变量。
这是我的活动按钮:
<form >
<input type="radio" id="html" name="status" value="HTML" onClick={this.setClientStatus("Active")}/>
<label for="html">Active</label><br/>
<input type="radio" id="css" name="status" value="CSS" onClick={this.setClientStatus("InActive")}/>
<label for="css">InActive</label><br/>
</form>
以下是我的分派方法:
const mapDispatchToProps = dispatch => ({
setClientName: clientName=>dispatch(onSetClientName(clientName)),
setClientStatus:clientStatus=>dispatch(onSetClientStatus(clientStatus))
});
export default connect(mapStateToProps, mapDispatchToProps)(toReturn);
以下是我更改状态的方法:
constructor(props) {
super(props);
this.setClientStatus=this.setClientStatus.bind(this);
}
setClientStatus(status)
{
this.props.setClientStatus(status)
}
``` `action.js` ```
export const SET_STATUS='CLIENT/SET_STATUS'
``` `actionCreator.js` ```
export function onSetClientStatus(clientStatus)
{
// console.log(clientStatus)
return {type:Actions.SET_STATUS,clientStatus}
}
``` `clientReducer.js` ```
const initialState = {
clientStatus:"",
};
case Actions.SET_STATUS:{
{
console.log(action.clientStatus)
return Object.assign({},state,{clientStatus:action.clientStatus})}
}
即使我尝试在actioncreator或reducer中记录状态,但在不单击单选按钮的情况下,每当应用程序的状态因其他状态变量而改变时,我都会看到状态值的切换。我仅在上调用setclientstatus方法 onClick
单选按钮,但我不知道他们是如何登录到应用程序中的每个状态变化。
这是我的完整工作应用程序 npm start
跑然后去 add a client
然后在单选按钮之间切换。
github回购在这里
谢谢
1条答案
按热度按时间a5g8bdjr1#
在
onClick
您正在调用setClientStatus
而不是传递函数。它发生在每个渲染上,这就是为什么在其他状态更改时看到它被切换。而不是:
您可能需要: