Javascript 有没有办法编写脚本来更新React函数组件道具?

Javascript 有没有办法编写脚本来更新React函数组件道具?,javascript,reactjs,Javascript,Reactjs,我试图编写一个chrome扩展来更新React组件的道具。但它似乎对类组件很有效,但对函数组件不起作用。有什么想法吗 下面是示例代码: // just add two very simple components const FunctionComponent = ({ text }) => <div>FunctionComponent: {text}</div>; class ClassComponent extends React.Component {

我试图编写一个chrome扩展来更新React组件的道具。但它似乎对类组件很有效,但对函数组件不起作用。有什么想法吗

下面是示例代码:

// just add two very simple components
const FunctionComponent = ({ text }) => <div>FunctionComponent: {text}</div>;

class ClassComponent extends React.Component {
  render() {
    return <div>ClassComponent: {this.props.text}</div>;
  }
}

ReactDOM.render(
  <>
    <FunctionComponent text="--" />
    <ClassComponent text="--" />
  </>,
  document.getElementById("root")
);

// update props outside of react
function updateProps(domElement, newProps) {
  var keys = Object.keys(domElement);
  var instanceKey = keys.filter((prop) =>
    /__reactInternalInstance/.test(prop)
  )[0];
  var instance = domElement[instanceKey];

  for (var prop in newProps) {
    if (newProps.hasOwnProperty(prop)) {
      instance.return.stateNode.props[prop] = newProps[prop];
    }
  }
  instance.return.stateNode.updater.enqueueForceUpdate(
    instance.return.stateNode
  );
}

// update ClassComponent: works!
updateProps(document.getElementById("root").childNodes[1], { text: "works!" });

// update FunctionComponent: can't get return.stateNode
updateProps(document.getElementById("root").childNodes[0], { text: "works!" });

//只需添加两个非常简单的组件
const FunctionComponent=({text})=>FunctionComponent:{text};
类组件扩展了React.Component{
render(){
返回类组件:{this.props.text};
}
}
ReactDOM.render(
,
document.getElementById(“根”)
);
//在react之外更新道具
函数更新操作(DomeElement、newProps){
var keys=Object.keys(domeElement);
var instanceKey=keys.filter((prop)=>
/__reactInternalInstance/.test(prop)
)[0];
var instance=domeElement[instanceKey];
for(新道具中的var道具){
if(newProps.hasOwnProperty(prop)){
instance.return.stateNode.props[prop]=newProps[prop];
}
}
instance.return.stateNode.updater.enqueueForceUpdate(
instance.return.stateNode
);
}
//更新类组件:工作!
updateProps(document.getElementById(“root”).childNodes[1],{text:“works!”});
//更新FunctionComponent:无法获取return.stateNode
updateProps(document.getElementById(“root”).childNodes[0],{text:“works!”});
代码笔:

p、 s.函数updateProps来自:

您使用类的方式完全不受支持,并且将随着将来的React更新而中断。@DanAbramov感谢您的回复:)您有什么建议吗?或者react-dev工具是如何使其工作的?谢谢