背景 我正在制作一个React-Native应用程序。 我找到了这个样板:https://github.com/ipeedy/react-native-boilerplate 由于它有点旧,我更新了所有依赖项并制作了PR。所以对开源项目的贡献感觉非常好,因为我需要在我的项目中进行本地化,所以我会在样板中加入它并将其作为公关添加。
目标: 我想实现https://github.com/joshswan/react-native-globalize,当我在代码中手动更改顶级组件上的语言代码时,所有这些似乎都很有效。 所以现在我想制作一个可以改变语言代码的按钮。就像我在实施选择列表之前的测试一样正确的地方。
问题: 所以,我真的试图找到关于如何在我的样板中将我的Redux放在一起的答案,但我只能让我的动作运行但没有其他事情发生。
我还在学习反应,但我认为我对它有很好的理解,但对于Redux - 我仍然是一个菜鸟:)
我的所有代码都在这里:主分支上的https://github.com/AndersGerner/react-native-boilerplate。
以下是不起作用的代码:
...
import { changeLanguage } from '../actions'
...
class WelcomeScreen extends Component {
render() {
return (
<ContainerView>
<TitleText>
<FormattedMessage
message="Welcome"
/>
</TitleText>
<ButtonContainer>
<Button text="Go to main" onPress={() => this.props.navigation.navigate('Main')} />
<Button text="Set lang to DK - Directly" onPress={() => {changeLanguage('DK')}} />
<Button text="Set lang to DK - Dispatch" onPress={() => {this.props.navigation.dispatch({type:'change_language'})}} />
</ButtonContainer>
</ContainerView>
);
}
}
消息来源: https://github.com/AndersGerner/react-native-boilerplate/blob/master/src/screens/Welcome.js
所以我理解直接调用动作只是给了我返回的对象,因此没有任何反应。 但是我已经尝试制作一个3.按钮,它通过反应导航使用“Dispatch”功能,我已经阅读过使用默认的Redux调度功能,应该是正确的方法。
从我在repo中的代码中可以看出,我在action和reducers中都添加了console.logs。
我的输出是: 直接调用操作会在触发的console.log中解析。 使用调度功能不会显示任何日志或任何内容。
非常感谢大家提供任何帮助:)
答案 0 :(得分:0)
所以......我学会了连接:)
对于任何人来说,问题已解决,但将其添加到我的WelcomeScreen文件的底部:
const mapStateToProps = state => ({ });
export default connect(mapStateToProps, {
changeLanguage,
})(WelcomeScreen);
:)