私は最初のReact/Reduxプロジェクトに取り組んでおり、少し質問があります。私はドキュメントを読んで、https://egghead.io/lessons/javascript-redux-generating-containers-with-connect-from-react-redux-visibletodolistで入手できるチュートリアルを見ました。ReactとRedux:複数のコンポーネントとベストプラクティスへの接続
しかし、私はまだ1つの質問があります。それはログインページに関するものです。
コンポーネント/ LoginForm.js
import { Component, PropTypes } from 'react'
class LoginForm extends Component {
render() {
return (
<div>
<form action="#" onSubmitLogin={(e) => this.handleSubmit(e)}>
<input type="text" ref={node => { this.login = node }} />
<input type="password" ref={node => { this.password = node }} />
<input type="submit" value="Login" />
</form>
</div>
)
}
handleSubmit(e) {
e.preventDefault();
this.props.onSubmitLogin(this.login.value, this.password.value);
}
}
LoginForm.propTypes = {
onSubmitLogin: PropTypes.func.isRequired
};
export default LoginForm;
そして、私のコンポーネントにデータを渡すログインという名前のコンテナコンポーネント: は、だから私は、プレゼンテーションコンポーネントという名前のLoginFormを持っています。反応-Reduxのルータを使用して、私はこのコンテナ(とないpresentationnalコンポーネント)を呼び出す:
コンテナ/ Login.js
はimport { connect } from 'react-redux'
import { login } from '../actions/creators/userActionCreators'
import LoginForm from '../components/LoginForm'
const mapDispatchToProps = (dispatch) => {
return {
onSubmitLogin: (id, pass) => dispatch(login(id, pass))
}
};
export default connect(null, mapDispatchToProps)(LoginForm);
あなたが見ることができるように、私はconnect
メソッドを使用しています提供します私のコンテナを作るために還元する。
私の質問には、次のいずれかです。
私は私のログインコンテナは、複数のビューを使用したい場合(例:エラーを表示するようにLoginFormとerrorList)を、私は接続せずに(手でそれを行う必要があるため、テイクを接続します1つだけの引数)。次のようなもの:
class Login extends Component {
render() {
return (
<div>
<errorList />
<LoginForm onSubmitLogin={ (id, pass) => dispatch(login(id, pass)) } />
</div>
)
}
}
悪い習慣ですか? errorListとLoginFormの両方を使用し、LoginPageにconnect
というコンテナを作成する別のプレゼンテーションコンポーネント(LoginPage)を作成する方が良いですか?
EDIT:私は第三プレゼンテーションコンポーネント(LoginPage)を作成する場合は、私が2倍のデータを渡す必要があります。このように:Container -> LoginPage -> LoginForm & ErrorList
。 文脈であっても、行く方法ではないようです。
非常に役に立ちます。遅れて申し訳ありません、ありがとうございます! – Armelias