React native 从mapDispatchToProps分派后导航到新组件
通过单击英语或法语按钮设置应用程序的语言后,我需要导航到下一个屏幕。如何在React native 从mapDispatchToProps分派后导航到新组件,react-native,redux,React Native,Redux,通过单击英语或法语按钮设置应用程序的语言后,我需要导航到下一个屏幕。如何在发送后直接调用this.props.navigation.navigate('HomeScreen') 我试着把这两个函数都放进一个函数中,然后从onPress调用它,但都不起作用 LanguageScreen.js <Button title="English" onPress={this.props.english} /> <Button title="Français" onPress=
发送后直接调用this.props.navigation.navigate('HomeScreen')
我试着把这两个函数都放进一个函数中,然后从onPress
调用它,但都不起作用
LanguageScreen.js
<Button
title="English"
onPress={this.props.english}
/>
<Button
title="Français"
onPress={this.props.french}
/>
import React, { Component } from 'react';
import { bindActionCreators } from 'redux'
import { connect } from 'react-redux';
import LanguageScreen from '../screens/LanguageScreen.js';
const mapStateToProps = (state, props) => ({
language: state.language
})
const mapDispatchToProps = (dispatch) => ({
french: () => {
dispatch({ type: 'FRENCH' });
},
english: () => {
dispatch({ type: 'ENGLISH' });
},
})
export default connect(mapStateToProps, mapDispatchToProps)(LanguageScreen)
import { createStore } from 'redux'
export const language = (state = 'english', action) => {
switch (action.type) {
case 'FRENCH':
return 'french';
case 'ENGLISH':
return 'english';
default:
return state;
}
}
let store = createStore(language);
export default store;
store.js
<Button
title="English"
onPress={this.props.english}
/>
<Button
title="Français"
onPress={this.props.french}
/>
import React, { Component } from 'react';
import { bindActionCreators } from 'redux'
import { connect } from 'react-redux';
import LanguageScreen from '../screens/LanguageScreen.js';
const mapStateToProps = (state, props) => ({
language: state.language
})
const mapDispatchToProps = (dispatch) => ({
french: () => {
dispatch({ type: 'FRENCH' });
},
english: () => {
dispatch({ type: 'ENGLISH' });
},
})
export default connect(mapStateToProps, mapDispatchToProps)(LanguageScreen)
import { createStore } from 'redux'
export const language = (state = 'english', action) => {
switch (action.type) {
case 'FRENCH':
return 'french';
case 'ENGLISH':
return 'english';
default:
return state;
}
}
let store = createStore(language);
export default store;
mapDispatchToProps
接受ownProps
作为第二个参数,因此假设您的组件接收navigate
prop,您可以尝试以下操作:
const mapDispatchToProps = (dispatch, ownProps) => ({
french: () => {
dispatch({ type: 'FRENCH' });
ownProps.navigation.navigate('HomeScreen');
},
english: () => {
dispatch({ type: 'ENGLISH' });
ownProps.navigation.navigate('HomeScreen');
},
}
mapDispatchToProps
接受ownProps
作为第二个参数,因此假设您的组件接收navigate
prop,您可以尝试以下操作:
const mapDispatchToProps = (dispatch, ownProps) => ({
french: () => {
dispatch({ type: 'FRENCH' });
ownProps.navigation.navigate('HomeScreen');
},
english: () => {
dispatch({ type: 'ENGLISH' });
ownProps.navigation.navigate('HomeScreen');
},
}
我试过了,但没用。除了您所显示的内容之外,我还需要做任何更改吗?您能否演示如何在应用程序中使用LanguageContainer
组件?您确定此组件接收到导航
属性吗?有什么错误吗?我试过了,但没用。除了您所显示的内容之外,我还需要做任何更改吗?您能否演示如何在应用程序中使用LanguageContainer
组件?您确定此组件接收到导航
属性吗?有什么错误吗?