javascript - 有没有办法编写脚本来更新 React 功能组件道具?
问题描述
我试图编写一个 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!" });
代码笔: https ://codepen.io/nick511/pen/JjGqaEm
ps 函数 updateProps 来自: 是否可以编写脚本在 React 组件上注入 props?
解决方案
推荐阅读
- awk - 不要在 awk 中转义变量
- node.js - 如何停止接收有关主题的 kafka-metadata 消息
- android - 数据绑定:如何在一个视图中绑定不同的数据变量
- excel - 数据透视表 Excel 到 Google 表格在列上添加计算值
- xaml - UWP 社区工具包 DataGrid:无法声明列
- php - 在php中用单引号连接变量
- java - 在 Perfecto 中找到具有另一个 Web 元素的 Web 元素
- flutter - 何时在 BlocBuilder() 中提供一个块?
- java - 使用 ResultTransformer 和投影的 Hibernate DetachedCriteria 未检索到实体列表
- github - 将所有存储库版本从 github 转换/迁移到 mercurial