state <-> props