【问题标题】:React element change state from domReact 元素从 dom 改变状态
【发布时间】:2018-06-22 08:45:14
【问题描述】:

我一直在使用这个功能:

window.FindReact = function (dom) {
  for (var key in dom) {
    if (key.startsWith('__reactInternalInstance$')) {
      var compInternals = dom[key]._currentElement;
      var compWrapper = compInternals._owner;
      var comp = compWrapper._instance;
      return comp;
    }
  }
  return null;
};
var someElement = $x("someElement")[0];
window.FindReact(someElement).setState({
  hover: true
});

将鼠标悬停在我们网站中的元素上,但从 React 16 开始,这会因错误而中断

'VM25001:1 Uncaught TypeError: Cannot read property '_owner' of undefined at window.FindReact (:1:181) at :3:18'

我该如何解决这个问题?

【问题讨论】:

  • 不幸的是,它们不再在 React 16 中公开 React 内部。此时您唯一的选择是降级到 React 15。

标签: javascript reactjs browser-automation


【解决方案1】:

你可以在 React 内部创建逻辑来操作 DOM 中的状态:

constructor() {
  // A function to manipulate the state:
  this.changeState = this.changeState.bind(this);

  const domElementToManipulateState = document.getElementById('domElement');

  domElementToManipulateState.addEventListener('hover', this.changeState);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    • 1970-01-01
    • 2020-12-10
    • 2021-10-30
    相关资源
    最近更新 更多