What is the principle of the CanvasRenderer.SetColor?May i use it instead of image.color?

in Unity 2018, CanvasRender.SetColor will Cause rebuild, but in Unity 2022 it will not, dose it mean it is more better, but how does it work?

If I want to change a image color, can I use CanvasRender.SetColor directly?
Is there something bad in this way?