Javascript 呼叫应用程序';在非反应组件中强制更新,而不将应用作为属性传递
我有一个模块,它不是react组件(我们称之为a),但它的变量通过react显示。现在A必须调用App.js的forceUpdate函数。但我不想在创建一个新的对象时总是将App.js作为属性传递 我创建了以下内容: App.js:Javascript 呼叫应用程序';在非反应组件中强制更新,而不将应用作为属性传递,javascript,reactjs,ecmascript-6,Javascript,Reactjs,Ecmascript 6,我有一个模块,它不是react组件(我们称之为a),但它的变量通过react显示。现在A必须调用App.js的forceUpdate函数。但我不想在创建一个新的对象时总是将App.js作为属性传递 我创建了以下内容: App.js: let forceUpdateCaller; export default class App extends React.Component { static forceUpdate = () => { if (forceUpda
let forceUpdateCaller;
export default class App extends React.Component {
static forceUpdate = () => {
if (forceUpdateCaller) {
forceUpdateCaller();
}
}
forceUpdateCaller = () => {
this.forceUpdate();
}
constructor(props) {
super(props);
forceUpdateCaller = this.forceUpdateCaller;
}
...
}
A:
但我相信,有一个更好、更干净的方法。你有什么想法吗?找到了最好的方法:
export let ref;
class App extend React.Component{
constructor(props){
super(props);
ref = this;
}
}
现在,当我导入
{ref}
时,我可以完全访问App对象:) forceUpdateCaller=this.forceUpdateCaller.bind(this)代码>但为了使其更完整,最好执行->this.forceUpdateCaller=this.forceUpdateCaller.bind(this);forceUpdateCaller=this.forceUpdateCaller代码>以便内部方法也具有正确的此。。
export let ref;
class App extend React.Component{
constructor(props){
super(props);
ref = this;
}
}