Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.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 如何从父组件调用子组件setState_Reactjs - Fatal编程技术网

Reactjs 如何从父组件调用子组件setState

Reactjs 如何从父组件调用子组件setState,reactjs,Reactjs,我的主应用程序中嵌套了两个有状态的基于类的组件,一个基于父类的组件。在子组件1中,我成功地调用了父回调方法。在父回调中,我想调用子组件2的一个方法,这样我就可以设置#2的状态,而无需重新呈现父组件。我已经看到许多开发人员将孩子们变成无国籍的,甚至忽略了他们。然而,React鼓励开发人员“组合化”。。。指针plz 将数据存储在父级状态,然后允许两个子级通过setStates更新数据不会违反“组件化”的概念,只要两个子级严格声明了输入。如果一个子项需要更新另一个子项中的数据,您可以跳转到上下文级别并

我的主应用程序中嵌套了两个有状态的基于类的组件,一个基于父类的组件。在子组件1中,我成功地调用了父回调方法。在父回调中,我想调用子组件2的一个方法,这样我就可以设置#2的状态,而无需重新呈现父组件。我已经看到许多开发人员将孩子们变成无国籍的,甚至忽略了他们。然而,React鼓励开发人员“组合化”。。。指针plz

将数据存储在父级状态,然后允许两个子级通过setStates更新数据不会违反“组件化”的概念,只要两个子级严格声明了输入。如果一个子项需要更新另一个子项中的数据,您可以跳转到上下文级别并将其存储在父项中,则来自任一子项的数据更新将触发两个子项的渲染,确保显示与数据保持同步,同时将数据保留在单个位置(与父项一起,而不是在子项之间拆分).

将数据存储在父级状态,然后允许两个子级通过setStates更新数据不会违反“组件化”的概念,只要两个子级严格声明了输入。如果一个子项需要更新另一个子项中的数据,您可以跳转到上下文级别并将其存储在父项中,则来自任一子项的数据更新将触发两个子项的渲染,确保显示与数据保持同步,同时将数据保留在单个位置(与父项一起,而不是在子项之间拆分)

如果是这样的话,你应该考虑把状态提升到父级:

您的子组件应该只调用父方法来更新状态,这样,您将拥有一个单向的数据流,就像react应用程序应该具备的那样。基本上,它鼓励你有一个单一的真实来源,并确保在你的应用程序中同步数据。此外,它还消除了不必要的逻辑,如您现在正在做的事情:
如果是这样的话,你应该考虑把状态提升到父级:

您的子组件应该只调用父方法来更新状态,这样,您将拥有一个单向的数据流,就像react应用程序应该具备的那样。基本上,它鼓励你有一个单一的真实来源,并确保在你的应用程序中同步数据。此外,它还消除了不必要的逻辑,如您现在正在做的事情:

没错,我可以使用“React ref”调用子组件的实例方法。ref是组件实例上的属性。因此,现在我的子组件使用其componentDidUpdate调用父组件中的回调,然后父组件回调使用refs调用特定子组件的“update”方法。这些更新方法在子组件上设置state,瞧。

没错,我可以使用“React ref”调用子组件的实例方法。ref是组件实例上的属性。因此,现在我的子组件使用其componentDidUpdate调用父组件中的回调,然后父组件回调使用refs调用特定子组件的“update”方法。这些更新方法在子组件上调用setState,瞧。

所以一位同事解释说,在我的主应用程序中调用setState实际上会在所有子组件上调用setState(与JSX表达式相关)。尽管我喜欢将事件处理程序嵌套在其相关子组件中的想法,但似乎最佳实践模式是将所有处理程序都放在主应用程序中,将setState放在主应用程序中,然后让React做它自己的事情

因此一位同事解释说,在我的主应用程序中调用setState实际上会调用所有子组件上的setState(与JSX表达式相关)。尽管我喜欢将我的事件处理程序嵌套在其相关子组件中的想法,但似乎最佳实践模式是将所有处理程序都放在主应用程序中,在主应用程序中设置状态,然后让React做它自己的事情

首先,尝试共享代码,没有它,很难理解您的问题,其次,您正在尝试与调用父级回调方法的组件通信?看起来redux可以帮助您。您可以将对函数的引用传递给父组件,但是。。。很快就开始变得一团糟了。我在网上找到了这个,我现在正在深入研究。Migual,我也看到过关于redux和flux的报道,首先我要看看我是否可以不用它。Dave,也许我应该简单一点我刚开始深入了解ReactFirst,试着分享你的代码,如果没有这一点,你真的很难理解你的问题,第二,你在尝试交流调用父对象回调方法的组件?看起来redux可以帮助您。您可以将对函数的引用传递给父组件,但是。。。很快就开始变得一团糟了。我在网上找到了这个,我现在正在深入研究。Migual,我也看到过关于redux和flux的报道,首先我要看看我是否可以不用它。戴夫,也许我应该简单一点,我刚开始更深入地思考这个问题。是的,我可以把我的想法用这个概念来概括。。。我想我正在寻找一种只触发一个子组件重新渲染的方法。我开始认为React可以处理所有这些,而重新渲染父对象是实现goYeah的方法,我可以围绕这个概念来构思。。。我想我正在寻找一种只触发一个子组件重新渲染的方法。开始认为React可以处理所有这些,重新呈现父对象是实现这一点的方法,但是有更好的更可预测的方法,比如提升状态。你可以这样做,但是有更好的更可预测的方法,类似于提升状态。Nice explainion@LelouchNice explainion@LelouchAnd子组件可以有处理程序,但它们与UI行为有关,而不是与数据/状态有关