How do I change component properties without overriding them with parent component?

Hello, I’d like to write a script that works similar to setting alpha in CanvasGroup:
https://docs.unity3d.com/Manual/class-CanvasGroup.html

When I set alpha in CanvasGroup, child objects opacity changes but doesn’t get overwritten.
I’d like to achieve similar effect for setting child SpriteRenderers tint color. Is it possible not to change their color property permanently? So the tint color would just depend on enabled parent component’s value?

You can change the material color, but notice that if you only change the color to your target color, the final color will be your target color * SpriteRenderer color. What you should do is use the target color RGB divided by the SpriteRenderer color RGB.
I hope this will help you:

public bool isUseColor = true;
public Color col;

void Update () {
        foreach (Transform item in transform)
        {
            Color c = item.GetComponent<SpriteRenderer>().color;
            Color newCol = new Color();
            newCol.r = col.r / c.r;
            newCol.g = col.g / c.g;
            newCol.b = col.b / c.b;
            newCol.a = col.a / c.a;
            item.GetComponent<Renderer>().material.color = isUseColor ? newCol : Color.white;
        }
}