Javascript 有没有办法编写脚本来更新React函数组件道具?
我试图编写一个chrome扩展来更新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 {
// 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工具是如何使其工作的?谢谢