Javascript 呼叫应用程序';在非反应组件中强制更新,而不将应用作为属性传递

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

我有一个模块,它不是react组件(我们称之为a),但它的变量通过react显示。现在A必须调用App.js的forceUpdate函数。但我不想在创建一个新的对象时总是将App.js作为属性传递

我创建了以下内容:

App.js:

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;
    }
}