【问题标题】:How to change the initial state set in reducer from another component如何从另一个组件更改减速器中设置的初始状态
【发布时间】:2019-07-06 20:33:23
【问题描述】:

我已经在我的 redux reducer 中设置了登录身份验证的初始状态。成功登录时说 authError=null 我想更改它。当我点击注销时,我想设置authError = ''

我可以将reducer从一个组件更改为只读状态吗?

组件

   const {authError} = this.props;
   this.setState(authError = "")

减速器

 const initState = {
 authError : '',
 empname : 'test', phoneno:'321' 
 }

 const signin = (state = initState, action) => {

switch(action.type){
  case 'SIGN_IN':
    const empname = action.payload.empname;
    const phoneno = action.cred.phoneno;
    console.log('===============$$$=====================');
    console.log(empname, phoneno);
    console.log('===============$$$=====================');
    return {
      ...state,
      authError : null,
      empname,
      phoneno
   }
} 

【问题讨论】:

  • reducer 的只读状态是什么意思?

标签: reactjs react-redux


【解决方案1】:

不,你不能在道具上调用setState。因为 props 用于在创建组件时自定义组件并为其赋予不同的参数。

与 props 不同,state 是一个私有特性,它严格属于单个组件。 State 允许 React 组件随时间动态改变输出以响应某些事件。

reducer 是一个纯函数,它将先前的状态和一个动作作为参数并返回一个新的状态。

简而言之,reducer 以 props 的形式将应用程序状态分派给合适的组件。如果您想从组件中更改 prop 的值,您需要定义一个 separate 操作并修改该操作中的值,然后您可以返回修改后的值。

您可以通过阅读this轻松开始

【讨论】:

    猜你喜欢
    • 2019-02-14
    • 1970-01-01
    • 2021-10-13
    • 2019-05-11
    • 2017-07-03
    • 2019-04-20
    • 2019-06-11
    • 1970-01-01
    • 2017-12-21
    相关资源
    最近更新 更多