Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 连接的属性仅更新一次,不会第二次更新_Javascript_Reactjs_Redux_React Redux_Redux Form - Fatal编程技术网

Javascript 连接的属性仅更新一次,不会第二次更新

Javascript 连接的属性仅更新一次,不会第二次更新,javascript,reactjs,redux,react-redux,redux-form,Javascript,Reactjs,Redux,React Redux,Redux Form,我使用redux表单来处理所有与表单相关的事情。但是redux表单和connect装饰器都不能很好地协同工作。Connect正在更新我的showSpinner属性,因为表单提交更改了我的redux存储。但下次当redux商店发生更改时,我的已连接属性不会更新 代码如下: component.js const formSubmit = (values, dispatch) => { dispatch(submitLogin(values)); } const mapStateToP

我使用redux表单来处理所有与表单相关的事情。但是redux表单和connect装饰器都不能很好地协同工作。Connect正在更新我的showSpinner属性,因为表单提交更改了我的redux存储。但下次当redux商店发生更改时,我的已连接属性不会更新

代码如下:

component.js

const formSubmit = (values, dispatch) => {
    dispatch(submitLogin(values));
}

const mapStateToProps = (state, ownProps) => {
  return {
    app: state.app,
  }
}

const mapDispatchToProps = (dispatch, ownProps) => {
  return {
        mockSubmit: values => {
            dispatch(submitLogin(values));
        }
  }
}

@connect(mapStateToProps, mapDispatchToProps)
@reduxForm({form: 'loginForm', validate, onSubmit: formSubmit})
class Login extends Component {

  constructor(props) {
    super(props);
  }

  render() {
    const fullWidth = true;
        const self = this;
    return (
      <div>
                <p>{self.props.app.showSpinner.toString()}</p>
                <CircularProgress size={80} thickness={5} style={{display: self.props.app.showSpinner ? "block" : "none"}} />
        <form onSubmit={this.props.handleSubmit}>
          <div className="card-box">
            <div className="head">
              <p>Login</p>
            </div>
            <div className="body">
              <Field name="phone" type="text" component="input" label="Mobile Number"/>
            </div>
          </div>
        </form>
        <Terms/>
      </div>
    )
  }

}
export default Login;
app.js//在联合收割机减速器中,我将此减速器添加为应用程序

const initialState = {
  showSpinner: false,
  showAlert: false,
  showConfirm: false,
}

export function app(state = initialState, action) {
  switch(action.type) {

     case SUBMIT_LOGIN:
     return Object.assign(state, {
       showSpinner: true
     });
      break;

    case VERIFIED_USER:
      return Object.assign(state, {
        showSpinner: false
      });
      break;

    default:
      return state;
  }
}

我正在使用thunk中间件。所有的导入都是以正确的方式完成的,没有语法错误,我使用注释来用诸如connect和reduxForm之类的HOC装饰类。

您错误地实现了AppReducer。它改变状态对象,而不是创建新的状态对象

应该是

export function app(state = initialState, action) {
  switch(action.type) {

     case SUBMIT_LOGIN:
     return Object.assign({}, state, { // notice new object as the first arg
       showSpinner: true
     });

    case VERIFIED_USER:
      return Object.assign({}, state, {
        showSpinner: false
      });

    default:
      return state;
  }
}

哦……好吧,我被探索了世界上的一切,但没有看到这个小东西。非常感谢你。我想我需要其他人和我一起工作。@Vinet'DEVIN'Dev很高兴我能帮上忙。配对编程FTW:
export function app(state = initialState, action) {
  switch(action.type) {

     case SUBMIT_LOGIN:
     return Object.assign({}, state, { // notice new object as the first arg
       showSpinner: true
     });

    case VERIFIED_USER:
      return Object.assign({}, state, {
        showSpinner: false
      });

    default:
      return state;
  }
}