2016-11-10 12 views
1

私は以下のreactjsコンポーネントを持っています。redux入力テキスト値を取得

class Login extends Component { 

render() { 
    if (this.props.session.Authenticated) { 
     return (
      <div></div> 
     ); 
    } 
    return (
     <div> 
      <input type="text" placeholder="Username" /> 
      <input type="password" placeholder="Password" /> 
      <input 
       type="button" 
       value="Login" 
       onClick={() => this.props.LoginAction("admin", "password")} 
      /> 
     </div> 
    ); 
} 
} 

ログイン・コンポーネントは、「session.Authenticated」という名前の再来を介して設定されている小道具を使用しています。ユーザーセッションが認証されていない場合は、input個のフィールド(ユーザー名用とパスワード用)とLoginボタンを表示します。 Loginボタンを押すと、パラメータとして渡されたユーザー名とパスワードの値を使用してアクションを生成します。今、パラメータの2つのinputフィールドの値を取得するにはどうすればよいですか?

IOWの2つのinputフィールドの値を使用して、上記のコードでハードコードされた「管理者、パスワード」を削除したいとします。これを達成する方法は?

すべての例は、私が追加したくない新しい依存関係であるredux-formを指しています。私は自分の依存関係を最小限に保ちたいので、私のプロジェクトでは反応し、還元し、反応を還元するだけです。このような

答えて

1

何か:私はReduxのを使用してので、全体的に状態を維持する必要があるのです

class Login extends Component { 
    constructor(props){ 
     super(props); 
     this.state = { 
      model = { 
       login: "", 
       password: "" 
      } 
     } 
    } 
    render() { 
     if (this.props.session.Authenticated) { 
     return null; 
    } 
    return (
     <div> 
      <input type="text" value={this.state.model.value.login} onChange={e => this.updateModel(e.target.value, 'login')}placeholder="Username" /> 
      <input type="password" value={this.state.model.password }onChange={e => this.updateModel(e.target.value, 'password')} placeholder="Password" /> 
      <input 
       type="button" 
       value="Login" 
       onClick={() => this.props.LoginAction(this.state.model.login, this.state.model.password)} 
      /> 
     </div> 
    ); 
} 

updateModel(value, name){ 
    var model = extend({}, this.state.model); 
    model[name] = value; 
    this.setState({model}); 
    } 
} 
+1

。コンポーネント固有の状態を持つことは、reduxの悪い習慣ではありませんか? –

+0

'updateModel'メソッドはアクションを引き起こし、アクションはストア値を更新する必要があります – degr

+0

Reactは定型コードをたくさん必要としますので、いくつかのライブラリでフォームを検索してみてください。確かに、あなたは 'form'コンポーネントの中ですべてのアップデートマジックを行うフォームコンポーネントを見つけるでしょう。 – degr

関連する問題