Javascript 连接的属性仅更新一次,不会第二次更新
我使用redux表单来处理所有与表单相关的事情。但是redux表单和connect装饰器都不能很好地协同工作。Connect正在更新我的showSpinner属性,因为表单提交更改了我的redux存储。但下次当redux商店发生更改时,我的已连接属性不会更新 代码如下: component.jsJavascript 连接的属性仅更新一次,不会第二次更新,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
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;
}
}