Я только знакомлюсь с 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 не является функцией. В чем причина этого и как я могу это исправить?