javascript - 如何在没有 TestUtils.findAllInRenderedTree 的情况下遍历包括 DOM 组件在内的所有 React 组件?

标签 javascript reactjs

React v0.14 将不再提供通过 TestUtils.findAllInRenderedTree 遍历根组件内所有渲染组件的能力 - DOM 组件将被排除在外。

是否有一些更好的做法遍历根组件内的所有组件?

最佳答案

您可以通过遍历子节点来递归遍历节点。

function traverse(node, visitor){
  return _traverse(node, visitor, {level: 0, parent: null});
}

function _traverse(node, visitor, state){
  visitor(node, state);

  if (!node.props) return;
  var children = React.Children.toArray(node.props.children);

  children.forEach((child) => _traverse(child, visitor, {
    level: state.level + 1, parent: node
  }));
}

这是 an example .

您可以将函数修改为映射或过滤器而不是 forEach。


一般来说,除了单元测试或元编程之外,做这样的事情是一种反模式。

关于javascript - 如何在没有 TestUtils.findAllInRenderedTree 的情况下遍历包括 DOM 组件在内的所有 React 组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32967351/

相关文章:

javascript - 在多个浏览 session 中保存 javascript 变量?

javascript - Redux action 支持意外行为

javascript - 即使由其他组件传递,React Enzyme 也会获取所有类

javascript - 箭头函数中的默认参数值

javascript - Chart.js 找到交点并画一个圆

javascript - Ajax 请求失败

javascript - 警告 : Each child in a list should have a unique "key" prop. - ReactJS

reactjs - redux(用户认证)更新后React渲染私有(private)路由

javascript - Eloquent 模型属性作为驼峰大小写 [Laravel 5.2] [Dingo API]

javascript - 如何进行 jQuery 验证以仅允许表单中包含英文和日文字符