Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 对来自其他组件的操作调用组件方法_Reactjs_Redux_React Redux_Command Pattern - Fatal编程技术网

Reactjs 对来自其他组件的操作调用组件方法

Reactjs 对来自其他组件的操作调用组件方法,reactjs,redux,react-redux,command-pattern,Reactjs,Redux,React Redux,Command Pattern,当单击组件B中的按钮时,调用组件A中的方法的最佳方式是什么 这两个组件彼此分离。 我相信我可以使用一些非常简单的实现,比如: 组件A发送操作: {action: "BUTTON_CLICKED", value: true} 减速器捕捉动作: case "BUTTON_CLICKED": { const newState = { ...state }; newState.clicked = true; return newState; }

当单击组件B中的按钮时,调用组件A中的方法的最佳方式是什么

这两个组件彼此分离。 我相信我可以使用一些非常简单的实现,比如:

组件A发送操作:

{action: "BUTTON_CLICKED", value: true}
减速器捕捉动作:

case "BUTTON_CLICKED": {
        const newState = { ...state };
        newState.clicked = true;
        return newState;
    }
组件B收听道具:

componentWillReceiveProps = (newProps) => {
    if (newProps.clicked) {
        someMethod()
    }
};
和重置标志:

someMethod = ()=>{
   dispatch({action: "BUTTON_CLICKED", value: false})
}
但这种方式是错误的

有没有办法在react/redux中实现命令模式


谢谢

您的提问和解释是最好的模式。您已经编写了正确的代码,我认为您不需要更改它


请看,您是在单一真相来源的帮助下使用Redux的。因此,根据我的观点,你使用的任何东西都是正确的

你所要求并试图解释的是最好的模式。您已经编写了正确的代码,我认为您不需要更改它

请看,您是在单一真相来源的帮助下使用Redux的。因此,根据我的观点,你使用的任何东西都是正确的

“单击组件B中的按钮时,调用组件A中方法的最佳方式是什么?”

我将使用事件总线消息传递在模块之间进行通信。您在一个模块和另一个模块中发出事件,侦听特定事件

例如:

这是一篇与VueJS相关的文章,但它应该概述idea。

单击组件B中的按钮时,调用组件A中方法的最佳方式是什么

我将使用事件总线消息传递在模块之间进行通信。您在一个模块和另一个模块中发出事件,侦听特定事件

例如:


这是一篇与VueJS相关的文章,但它应该提供有关idea的概述。

您列出的方法似乎是正确的。Redux内置了此功能。您可以使用来侦听更改

componentWillMount() {
  this.unsubscribe = store.subscribe(this.onStoreChange);
}

componentWillUnmount() {
  this.unsubscribe();
}

onStoreChange = () => {
  const newState = store.getState();

  // Check if target value has changed here
}

你提出的方法似乎是正确的。Redux内置了此功能。您可以使用来侦听更改

componentWillMount() {
  this.unsubscribe = store.subscribe(this.onStoreChange);
}

componentWillUnmount() {
  this.unsubscribe();
}

onStoreChange = () => {
  const newState = store.getState();

  // Check if target value has changed here
}

你为什么说这是错的?真的吗?为什么组件B应该知道组件A中的任何按钮?是的,redux就是这样工作的。在你的应用程序中,这是唯一的真实来源。是的,组件B知道组件A的变化,但是通过redux商店。代码看起来很干净,我不知道你的问题。请再次阅读React的文档,为什么你说这是错误的?真的吗?为什么组件B应该知道组件A中的任何按钮?是的,redux就是这样工作的。在你的应用程序中,这是唯一的真实来源。是的,组件B知道组件A的变化,但是通过redux商店。代码看起来很干净,我不知道你的问题。请再次阅读React的文档。你是对的,事件总线是最好的方式,但我认为redux实现了一些事件总线。你是对的,事件总线是最好的方式,但我认为redux实现了一些事件总线。