我的问题是"当我想访问/响应子组件数据时,有没有办法避免在树的深处发送回调#34;。
我有一个组件Application
,其中包含子组件Person
,而子组件TraitCollection
又包含子组件Trait
,而子组件Trait
又包含子组件Application
。
更改Application
后,我想将数据发送回PersonList
,转发给名为Application
的{{1}}中的另一个孩子。
我目前的解决方案是将回调作为道具发送给每个孩子。每个回调函数构造并追加最终到达PersonList
的数据,并将其作为支柱传递给<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<html>
<head>
<title>Updating the Total Number of the total rows</title>
<script type="text/javascript" src="/Cesium-1.34/ThirdParty/jquery-1.11.3.min.js"></script>
</head>
<body>
<div id="totalattack"></div>
<script type="text/javascript">
function totalAttacks(val) {
$('#totalattack').html(val);
}
$(document).ready(function() {
var timer = setInterval(function() {
$.get({
url: 'calculateTotalAttack.php',
dataType: 'text',
success: totalAttacks
});
console.log('requesting changes');
}, 5000);
});
</script>
</body>
</html>
。
我可以想象&#34;添加更多级别&#34;,或者在更小的部分中拆分组件会使这个回调链更加复杂。
有没有其他方法可以做到这一点,或者这是处理从React中的子节点传递给父节点的数据的最佳方法?
答案 0 :(得分:1)
您处理它的方式是推荐方式和最类似React。除了你发现的问题之外,这种方法本身没有任何问题。看起来Redux可以帮助您解决这个问题。 Redux允许您将React应用程序的状态与公共存储的使用以及基于动作创建者,操作和缩减器的良好设计模式统一起来。
答案 1 :(得分:0)
您可以直接使用React Context https://facebook.github.io/react/docs/context.html,但更好的选择是使用React-Redux,它将允许您避免传递回调,并且您将能够从任何组件更改任何组件的状态(连接到商店)具有调度功能。
答案 2 :(得分:0)
文档直接回答:
<块引用>在大型组件树中,我们推荐的替代方法是通过上下文从 useReducer 传递一个调度函数
来自:https://reactjs.org/docs/hooks-faq.html#how-to-avoid-passing-callbacks-down (Archive)