React native 使用react native router flux在表示组件中识别右上角的按钮单击

React native 使用react native router flux在表示组件中识别右上角的按钮单击,react-native,react-native-router-flux,React Native,React Native Router Flux,我的应用程序场景使用一个容器组件,它调用一个表示组件 我可以在容器组件中创建右上角按钮,如下所示: static right = () => { return ( <TouchableOpacity onPress={() => buttonPressed()}> <Text style={styles.rightButtonText}>Done</Text> </TouchableOpacity>

我的应用程序场景使用一个容器组件,它调用一个表示组件

我可以在容器组件中创建右上角按钮,如下所示:

static right = () => {
  return (
    <TouchableOpacity onPress={() => buttonPressed()}>
      <Text style={styles.rightButtonText}>Done</Text>
    </TouchableOpacity>
  );
};
现在,我试图让右上角的按钮被表示组件识别,这样它就可以保存数据

我可以通过将函数作为道具从容器组件发送到表示组件,在两者之间进行通信。当它从presentational组件调用时,它在容器组件中被调用

但是我没有找到方法让容器组件中的staticright函数听到presentational组件中的单击,然后采取适当的操作

我和其他几个人一起尝试过,包括Action.refresh,但都没有成功。我曾想过使用state,但我无法访问state或this。如果我使用的是静态函数。但是去除静电会使按钮完全消失


提前感谢您的帮助。

我过去也遇到过类似的挑战。我处理的方法如下,主要是直接从代码库中获取的。请注意,这些方法与您提供的示例类似,但这可能对您有意义

•集装箱组件

具有处理业务逻辑的updateAccount函数。这将作为道具传递到表示组件中

•表象成分

突出显示演示组件中的2个特定功能:

手换

在文本输入更改时,将触发此功能,并在状态下更新输入中的数据 当调用该函数时,我们知道表单已经更改,因此我们希望在react native router flux导航栏中显示一个“save”按钮,点击该按钮将触发容器的updateAccount。所以我们称之为toggleSaveButton:

切换保存按钮

如果this.state.formChanged为true,则表单已更改,因此请添加保存按钮供用户点击,否则将其隐藏,例如,我可能会在表单提交成功时隐藏

toggleSaveButton = () => {
  const config = this.state.formChanged
    ? { rightTitle: 'Save', onRight: () => this.props.updateAccount(this.state) }
    : { rightTitle: '', onRight: () => {} };

  Actions.refresh(config);
};

非常感谢mcnamee,这正是我需要的。非常感谢。我无法实施图像更改:
toggleSaveButton = () => {
  const config = this.state.formChanged
    ? { rightTitle: 'Save', onRight: () => this.props.updateAccount(this.state) }
    : { rightTitle: '', onRight: () => {} };

  Actions.refresh(config);
};