如何递归遍历反应树并获取反应元素的状态?

时间:2019-05-27 02:58:46

标签: javascript reactjs

我使用react-children-utilities像这样递归遍历反应树:

import Children from 'react-children-utilities';
...

Children.deepForEach(window.rootNode, (child) => {
    if (child.props.key === '...') {
          //child.state === undefined
    }
});

我需要做的是访问元素的状态,但是在上面的代码中我不能这样做。如果我理解这一权利:问题在于,以上代码中的child是一个react元素,而不是react组件。那么,有没有办法使状态脱离react元素呢?

否则,除了react-children-utilities之外,还有其他方法可以递归遍历反应树并获取反应组件/元素的状态吗?

1 个答案:

答案 0 :(得分:1)

我是react-children-utilities的作者。您正在描述的问题我认为这与反应的原则相违背,因为这些组件不会将其状态暴露给父组件。如果您需要从子元素中获取一些东西,我建议实现一个事件并从中传递一个值。