ユーザーがフォームを送信したときにフォーム値を取得します。React/Reduxフォームでの提出の処理
var CommentForm = React.createClass({
handleAuthorChange: function(e) {
this.setState({author: e.target.value});
},
handleTextChange: function(e) {
this.setState({text: e.target.value});
},
handleSubmit: function(e) {
e.preventDefault();
var author = this.state.author.trim();
var text = this.state.text.trim();
if (!text || !author) {
return;
}
render: function() {
return (
<form className="commentForm" onSubmit={this.handleSubmit}>
このスタイルは、入力ごとの処理関数を介した状態にすべての変更をプッシュ:チュートリアルを示し、これを反応します。私がReduxを使いこなせば、私はアクションとアクションクリエイターをミックスに追加すると思う。それはオーバーヘッドのようだ。
handleSubmit
の引数がイベントであることに注意してください。
私は以下のReact/Reduxスターターキットに出くわしました。これは作業がはるかに簡単です。それはスマート/コンテナコンポーネントとダム/プレゼンテーションコンポーネントの組み合わせを使用しています。
@connect(
() => ({}),
{initialize})
export default class Survey extends Component {
...
handleSubmit = (data) => {
window.alert('Data submitted! ' + JSON.stringify(data));
this.props.initialize('survey', {});
}
render()
return (<SurveyForm onSubmit={this.handleSubmit}/>)
...
class SurveyForm extends Component {
static propTypes = {
handleSubmit: PropTypes.func.isRequired,
}
render() {
const { handleSubmit } = this.props;
return (
<div>
<form className="form-horizontal" onSubmit={handleSubmit}>
...
}
}
私は上不明確だ何フォームのonSubmit
ハンドラのハンドラがされている理由Facebookのチュートリアルの議論のためのイベントを取り上げますが、なぜスターターキットのonSubmit
ハンドラーがフォームデータを取っているのですか?スターターキットはredux-form
のパッケージが、このハンドラがどのように動作するべきかに直接影響することはありません。
'handleSubmit'は小道具として渡されているようですが、正しいと思います。' render()return( ) '何か他の意味ですか? –
コードでは、SurveyFormは 'this.props.onSubmit'を呼び出さず、' this.props.handleSubmit'を呼び出します。あなたのハンドラは 'onSubmit'プロップにバインドされています。つまり、' SurveyForm'によって直接呼び出されることはありません。 reduxFormコードでは、 'this.props.onSubmit'を呼び出すことができます。これは名前が非常に似ているので扱いにくいですが、本質的にはSurveyFormは 'this.props.handleSubmit'(reduxFormによって提供されます)を呼び出します。戻り値では' this.props.onSubmit'(ハンドラ)を呼び出します。 – whitep4nther