railsでreact.js入門(3)
Bài đăng này đã không được cập nhật trong 7 năm
時間が空いてしまったが再び投稿 今回で終わりです。
前回やったこと
ajaxでAPIからデータを貰ってきて反映する。
その時に問題になるのがpropとstate
prop
は不変のデータを、state
はユーザーのアクションによって変化するデータを扱う
環境
Rails 5.0.2 ruby 2.3.3p222 react-rails 1.11.0
参考サイト
本家大本:公式チュートリアル railsでのチュートリアルを説明してくださっているサイト:react-railsを使ってReactのTutorialをやってみる
Tutorial再開
引き続き各章ごとに学んだこと、考察などを並べていく。
Adding new comments /Optimization: optimistic updates
この章ではコメントを入力するフォームを作り、それを反映する
この章でReact.findDOMNode
のエラーが出た場合の対処法はこちら
- フォームのsubmitボタンが押されたときの動作は
handleSubmit()
で設定する。 書き方は以下のように書く
var CommentForm = React.createClass({
handleSubmit: function(e) {
// ここにsubmit時の動作を記述
return;
},
render: function() {
<form className="commentForm" onSubmit={this.handleSubmit}>
<input type="text" placeholder="Your name" ref="author" />
<input type="text" placeholder="Say something..." ref="text" />
<input type="submit" value="Post" />
</form>
}
});
- フォーム内でname属性の代わりにref属性を設定することで、reactのコンポーネント内で
this.refs.hoge
という風にアクセスできる。 - 親のコンポーネントで処理を行いたい場合以下のようにする
var CommentBox = React.createClass({
methodName: function(comment) {
// ここに行いたい処理を記述する
},
render: function() {
return (
<CommentForm onCommentSubmit={this.methodName} /> //ここでcallbackを渡す!
);
}
});
var CommentForm = React.createClass({
handleSubmit: function(e) {
e.preventDefault();
this.props.onCommentSubmit({author: author, text: text}); // ここでcallback実行する!
return;
}
render: function() {
return (
// 省略
);
}
});
ということで無駄に長引いてしまったこの企画も終了です。
All rights reserved