【发布时间】:2017-01-26 14:32:50
【问题描述】:
我正在构建一个非常简单的前端应用程序来连接一些 API。我有一个 redux 表单,它应该触发一个事件处理程序,然后触发一个动作创建者。事件处理程序目前没有收到任何道具(只是得到一个空对象)。这是我的组件
import React, { Component } from 'react'
// import { Link } from 'react-router'
import { reduxForm } from 'redux-form'
import fetchConcerts from '../actions/fetchConcerts.js'
class ListContainer extends Component {
handleFormSubmit(formProps){
event.preventDefault()
debugger
this.props.fetchConcerts(formProps)
}
render(){
const { fields: { userCity, userDate }, handleSubmit } = this.props;
return (
<div>
<form onSubmit={handleSubmit(this.handleFormSubmit.bind(this))} >
<label>City</label>
<input type="text" className="form-input" {...userCity} />
<label>Date</label>
<input type="text" className="form-input" {...userDate} />
<input type="submit" value="Submit" />
</form>
</div>
);
}
}
export default reduxForm({
form: 'search',
fields: ['userCity', 'userDate']
}, null, { fetchConcerts })(ListContainer);
App.js(父组件)如下-->
import React, { Component } from 'react';
import ListContainer from './containers/ListContainer.js'
import './App.css';
export default class App extends Component {
render() {
return (
<div className="App">
<ListContainer />
</div>
);
}
}
提交后,handleFormSubmit 被启动,我点击了调试器,但 formProps 是 Object = {}
有什么想法吗?我在使用 redux 表单时经常遇到这个问题,但我永远无法真正弄清楚我哪里出错了。
谢谢
【问题讨论】:
-
你用的是什么版本的 redux-form?
-
这似乎不是一个有效的版本:github.com/erikras/redux-form/tags?after=v4.0.4。如果您确实使用的是旧版本,您可能想尝试使用最新的 (6.x),因为创建者已经修复了大量错误
-
嗯,当我尝试更新任何软件包时,npm 向我抛出了一大堆错误。这是看起来的问题之一:npm ERR! peer dep 缺失:react-redux@^4.3.0,redux-form@6.0.5 npm ERR 需要! peer dep 缺失:redux@^3.0.0,redux-form@6.0.5 需要
-
所以我解决了依赖关系并更新了一切——没有错误,使用 redux-form 6.0.5 仍然有同样的问题
-
如果将
handleFormSubmit方法移动到App,然后添加<ListContainer onSubmit={this.handleFormSubmit} />,会发生什么情况
标签: javascript reactjs react-redux redux-form