在修改umi项目中子应用样式的时候不想在base修改全局的,一开始在子应用组件中使用setproperty修改,发现此方法会把全局的都覆盖掉。
微应用base主应用和main子应用,子应用中使用document.body.style.setproperty设置了全局样式,在子应用中如果想修改base中的全局样式,可以使用同样的方式修改,
document.body.style.setproperty('modal-body-bc','#f7f8fa')
useEffect(()=>{
document.body.style.setproperty('modal-body-bc','#fff')
},[])
此方法修改后会把全局的样式都修改掉,如果只想局部修改,可以在对应的逻辑中修改
例如:点击新增按钮弹出modal弹框,当modal弹框打开的时候显示fff背景色,其他页面按照之前的样式:
import React,{useState,useEffect} from "react";
export default class Home extends React.Component{
const [visibel,setVisibel]=useState(false)
const showModal=()=>{
setVisibel(true)
}
useEffect(()=>{
if(visibel){
// modal弹框局部样式
document.body.style.setProperty('modal-body-bc','#fff')
}else{
// base原样式
document.body.style.setProperty("fff")
}
},[visibel])
render(){
return(
<button onClick={showModal} >点击,打开modal弹框</button>
{visibel&&<childModal visibel={visibel} />}
)
}
}