首页 > 解决方案 > 在 react redux 构造函数中设置状态

问题描述

我正在尝试在 react redux 中为两个单独的 uPort 登录设置状态。我试图在下面这样做,但是我收到了一个错误

未处理的拒绝(TypeError):_this.props.actions.connectUportDoc 不是函数

我想基本上创建一个 if else 语句。如果按下患者按钮,则按下确认登录患者。如果按下医生按钮,按下确认登录医生。

class Login extends Component {
  constructor(props) {
    super(props)
    // this.connectUport = this.connectUport.bind(this)
    this.connectUportDoc = this.connectUportDoc.bind(this)
    this.connectUportPatient = this.connectUportPatient.bind(this)

    uportConnect.onResponse(ConnectReqID).then((res) => {
      console.log('res.payload')
      console.log(res.payload)
      this.props.actions.connectUportDoc(uportConnect.state)
      this.props.history.push('/confirmLoginDoctor')
    })

    uportConnect.onResponse(ConnectReqID).then((res) => {
      console.log('res.payload')
      console.log(res.payload)
      this.props.actions.connectUportPatient(uportConnect.state)
      this.props.history.push('/confirmLoginPatient')
    })
  }

  connectUportDoc() {
    const reqObj = {
      requested: ['name', 'phone', 'country', 'avatar', 'email'],
      notifications: true,
    }
    console.log(reqObj)
    uportConnect.requestDisclosure(reqObj, ConnectReqID)
  }

  connectUportPatient() {
    const reqObj = {
      requested: ['name', 'phone', 'country', 'avatar', 'email'],
      notifications: true,
    }
    console.log(reqObj)
    uportConnect.requestDisclosure(reqObj, ConnectReqID)
  }

  render() {
    return (
       <a onClick={this.connectUportDoc.bind(this)}>Doctor Login</a>
       <a onClick={this.connectUportPatient.bind(this)}>Patient Login</a>
    )
  }
}

const mapStateToProps = (state, props) => {
  return {
    uport: state.login.uport,
  }
}
const mapDispatchToProps = (dispatch) => {
  return { actions: bindActionCreators(AppActions, dispatch) }
}

export default withRouter(
  connect(
    mapStateToProps,
    mapDispatchToProps
  )(Login)
)

标签: javascriptreactjsreact-reduxreact-router

解决方案


推荐阅读