我使用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之外,还有其他方法可以递归遍历反应树并获取反应组件/元素的状态吗?
答案 0 :(得分:1)
我是react-children-utilities的作者。您正在描述的问题我认为这与反应的原则相违背,因为这些组件不会将其状态暴露给父组件。如果您需要从子元素中获取一些东西,我建议实现一个事件并从中传递一个值。