如何从另一个组件更改减速器中设置的初始状态

时间:2019-02-13 05:07:03

标签: reactjs react-redux

我已在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
   }
} 

1 个答案:

答案 0 :(得分:1)

不,您不能在道具上叫setState。由于道具用于在创建组件时自定义组件并为其提供不同的参数。

不同于道具,状态是一个私有功能,它严格属于单个组件。状态允许React组件响应某些事件而随着时间动态地更改输出。

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

简而言之,Reducer以prop的形式将应用程序状态分配到适当的组件。如果要更改组件的prop值,则需要定义一个单独操作并在该操作中修改值,然后可以返回修改后的值。

您可以通过阅读this

轻松上手。