私はちょうどreduxに慣れ親しんでおり、私はアクションクリエイターをアプリケーションの親を通して渡し、mapStateToProps、mapDispatchToProps、および私はアクションを渡すことができる必要があります。しかし、私は子コンポーネントを呼び出すときthis.props。関数が存在しないので、正しく渡されていないようです。ネイティブ・コネクト機能が小道具を介して子コンポーネントにアクションを渡さない
私は大いに助けていただきたいと思います。
注:私は輸入品や減量剤のようなものをいくつか省略して、より簡潔にしました。
login.js:
export function login(token, id) {
console.log('login action');
return {
type: 'LOG_IN',
token,
id,
};
}
index.ios.js:
import * as actionCreators from './actions/login'
const store = createStore(RootReducer, undefined, autoRehydrate());
persistStore(store);
class App extends Component {
constructor(props) {
super(props);
state = {
token: '',
id: '',
store: store,
};
}
render() {
return (
<Provider store={ state.store }>
<View style = {styles.container}>
<LoginView/>
</View>
</Provider>
);
}
}
AppRegistry.registerComponent('App',() => App);
function mapStateToProps(state) {
return {
token: state.token,
id: state.id
}
}
function mapDispatchToProps(dispatch) {
return bindActionCreators({actionCreators}, dispatch);
}
export default connect(mapStateToProps, mapDispatchToProps)(App);
loginView.js:
export class LoginView extends View {
static propTypes = {}
static defaultProps = {}
constructor(props) {
console.log(props);
super(props)
this.state = {
user: '',
token: '',
id: '',
}
this.onLogin = this.onLogin.bind(this);
}
onLogin() {
console.log("on login1");
this.props.login({token: this.state.token, id: this.state.id});
console.log("on login");
}
そして、基本的に何が起こることになるときonLogin()関数が直接上に呼び出された場合、this.props.loginは関数ではないことを示します。これの理由は何ですか?どうすれば修正できますか?
ありがとうございます。 私の実装にこのガイドを使用していました:https://medium.com/@MKulinski/react-redux-basics-a36914c0035d#.76dv77xlp コンポーネントの小道具として渡す必要はないように聞こえましたあなたが言ったように。これは当てはまりませんか? – jkurs
ええ、その記事の文言は悪いです。 Reactコンポーネントは、魔法のように小道具を手に入れることはありません。彼らはどこかから手渡さなければなりません。 'connect'はデータ小道具と関数小道具をあなたの「本当の」コンポーネントに渡すラッパーコンポーネントを生成します。ですから、明示的に 'App'の' onLogin'メソッドを 'LoginView'に明示的に渡すか、' LoginView'を直接 'mapDispatch'の' onLogin'に渡してください。 – markerikson
また、React、Redux、および関連トピックに関する高品質のチュートリアルや記事へのリンクは、https://github.com/markerikson/react-redux-linksにあります。たくさんの良い情報や例がそこからリンクされています。 – markerikson