loading
我有一个使用我在 redux 中的状态的 react-highcharts 构建的图表。当loading
is时true
,该图表应该将其更改为 0.35 并在isopacity
时返回 1 。loading
false
我的问题是,当我将loading
道具传递给子组件时,它会重新渲染整个组件,并且每当loading
更改时,它都会使图表动画两次:
<SeatDemandChart
seatVolatility={basicInputs.seatVolatility}
desktopWidth={desktopWidth}
spaceChartId={spaceChart}
key={`${mobileScreenResults}_${tab}`}
netArea={newResults.tradResults.netArea}
seatChartResults={newResults.seatChartResults}
measureName={measureName}
loading={loading}
/>
和组件:
import ReactHighcharts from 'react-highcharts'
class SeatDemandChart extends Component {
shouldComponentUpdate(nextProps) {
return !isEqual(nextProps, this.props)
}
render() {
const {
seatChartResults,
netArea, measureName,
printConfig,
seatVolatility,
spaceChartId,
loading,
} = this.props
//....
return (
<div>
<StyledChartContainer
print={printConfig && location === '/print' ? true : ''}
loading={loading}
>
// ....
使用该loading
道具的样式化组件:
export const StyledChartContainer = styled.div`
box-shadow: 0 2px 4px 0 rgba(39, 43, 47, 0.25);
transition: opacity 300ms ease-in-out;
opacity: ${({ loading }) => loading ? 0.35 : 1};
`
我错过了什么吗?我觉得我应该添加更多逻辑shouldComponentUpdate
,但我对如何处理这个问题非常迷茫。