为什么单选按钮切换不反映在redux状态变量中?

eh57zj3b  于 2021-09-08  发布在  Java
关注(0)|答案(1)|浏览(310)

我正在开发一个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回购在这里
谢谢

a5g8bdjr

a5g8bdjr1#

onClick 您正在调用 setClientStatus 而不是传递函数。它发生在每个渲染上,这就是为什么在其他状态更改时看到它被切换。
而不是:

onClick={this.setClientStatus("Active")}
onClick={this.setClientStatus("InActive")}

您可能需要:

onClick={() => this.setClientStatus("Active")}
onClick={() => this.setClientStatus("InActive")}

相关问题