Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.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
Javascript 需要来自其自己API的数据的子组件_Javascript_Angular_Ngrx_Ngrx Effects - Fatal编程技术网

Javascript 需要来自其自己API的数据的子组件

Javascript 需要来自其自己API的数据的子组件,javascript,angular,ngrx,ngrx-effects,Javascript,Angular,Ngrx,Ngrx Effects,我有一个父组件(表示当前URL)和三个子组件。每个组件都需要执行一个API请求来获取所需的数据 我最初的解决方案是在父级中订阅路由参数,然后分派一个由三个效果(每个组件一个)捕获的操作,这三个效果将执行API调用,最后三个还原器将存储响应 这是最好的方法还是有更合适的方法?您的解决方案听起来不错。此外,我还想补充一点,您希望处理对父组件中效果的所有订阅,并将结果异步导入子组件上的@Inputs()。此外,在您的子组件中,将changeDetection设置为OnPush。@runyards非常有

我有一个父组件(表示当前URL)和三个子组件。每个组件都需要执行一个API请求来获取所需的数据

我最初的解决方案是在父级中订阅路由参数,然后分派一个由三个效果(每个组件一个)捕获的操作,这三个效果将执行API调用,最后三个还原器将存储响应


这是最好的方法还是有更合适的方法?

您的解决方案听起来不错。此外,我还想补充一点,您希望处理对父组件中效果的所有订阅,并将结果异步导入子组件上的@Inputs()。此外,在您的子组件中,将changeDetection设置为OnPush。@runyards非常有意义。谢谢@runyards:最后一件事,您是否会分派一个动作
父项。更改了
哪三个效果会捕获,或者更确切地说分派了三个单独的动作:
child1.load
child2.load
child3.load
,这取决于实际情况,一个动作看起来比分派三个单独的动作要小,但是,请记住,稍后使用单独的组件会给您更多的控制,因为您可能只想更新其中一个组件或在其他地方重用它们,并且可能不需要全部3个组件即可启动。如果你想使用一个动作,创建一个像loadAlll这样的新动作,这样你就有了一个用于加载所有动作的指定动作,而不仅仅是将child1.load重新指定给所有动作。你的解决方案听起来不错。此外,我还想补充一点,您希望处理对父组件中效果的所有订阅,并将结果异步导入子组件上的@Inputs()。此外,在您的子组件中,将changeDetection设置为OnPush。@runyards非常有意义。谢谢@runyards:最后一件事,您是否会分派一个动作
父项。更改了
哪三个效果会捕获,或者更确切地说分派了三个单独的动作:
child1.load
child2.load
child3.load
,这取决于实际情况,一个动作看起来比分派三个单独的动作要小,但是,请记住,稍后使用单独的组件会给您更多的控制,因为您可能只想更新其中一个组件或在其他地方重用它们,并且可能不需要全部3个组件即可启动。如果您想使用一个操作,请创建一个新的操作,如loadAlll,这样您就有了一个用于加载所有操作的指定操作,而不仅仅是将child1.load重新指定给所有操作。