React-Navigation:不会调用Reducer

时间:2018-04-01 13:33:59

标签: react-redux react-navigation

背景 我正在制作一个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中解析。 使用调度功能不会显示任何日志或任何内容。

非常感谢大家提供任何帮助:)

1 个答案:

答案 0 :(得分:0)

所以......我学会了连接:)

对于任何人来说,问题已解决,但将其添加到我的WelcomeScreen文件的底部:

const mapStateToProps = state => ({ });

export default connect(mapStateToProps, {
    changeLanguage,
})(WelcomeScreen);

:)