単一の目的のフォームをconnect
でアクションにバインドすることもできます。
import React from 'react';
import * as userActionCreators from '../actions/users';
import { connect } from 'react-redux';
export class LoginComponent extends React.Component {
static propTypes = {
login: React.PropTypes.func.isRequired
}
render() {
const { login } = this.props;
const { username, password } = this.state;
return (
<form onSubmit={() => login(username, password) }>
...
</form>
);
}
}
export default connect(null, userActionCreators)(LoginComponent);
connect
自動的にアクションの作成者を結合し、別途props
にdispatch
を提供するので、あなたがより明確になりたい場合は、上記の例:<LoginComponent />
は通常、常に正確に同じことをやっているので、あなたはこのようにそれを使用することができます
import React from 'react';
import { login } from '../actions/users';
import { connect } from 'react-redux';
export class LoginComponent extends React.Component {
static propTypes = {
dispatch: React.PropTypes.func.isRequired
}
render() {
const { login, dispatch } = this.props;
const { username, password } = this.state;
return (
<form onSubmit={() => dispatch(login(username, password)) }>
...
</form>
);
}
}
export default connect()(LoginComponent);
およびリファレンス、userActionCreators
と同じです:
const LOGIN_SUCCESS = 'LOGIN_SUCCESS';
const LOGIN_FAILED = 'LOGIN_FAILED';
export function login(username, password) {
if (username === 'realUser' && password === 'secretPassword') {
return { type: LOGIN_SUCCESS, payload: { name: 'Joe', username: 'realUser' } };
} else {
return { type: LOGIN_FAILED, error: 'Invalid username or password };
}
}
ありがとう! 'userActionCreators'の様子を答えるために追加できますか? – vitalets
'userActionsCreators'の例を追加し、' connect'で展開しました –
助けてくれてありがとう、中間コードブロックで 'this.props'から' dispatch'を抽出するのを忘れました。 –