我想使用从Single SPA ( customProps )传递的道具启动我的 React微应用。我想出的唯一方法是:
import React from 'react';
import ReactDOM from 'react-dom';
import singleSpaReact from 'single-spa-react';
import App from './where/my/root/is.js';
function domElementGetter() {
return document.getElementById("mounting-node")
}
let EnhancedRootComponent = App; /* 1 */
const reactLifecycles = singleSpaReact({
React,
ReactDOM,
rootComponent: EnhancedRootComponent, /* 1 */
domElementGetter,
})
export const bootstrap = [
(args) => {
/* 2 */ EnhancedRootComponent = () => <App myArgs={args.thePropsIWannaPass} />;
return Promise.resolve();
},
reactLifecycles.bootstrap,
];
export const mount = [reactLifecycles.mount];
export const unmount = [reactLifecycles.unmount];
这确实有效(我可以在我的组件中看到并使用传递的道具),但我对根组件在调用singleSpaReact
(1) 和调用bootstrap
(2) 之间发生变化这一事实并不完全满意。会不会有我现在没有看到的副作用?有谁知道更好的方法?